diff --git a/.github/workflows/ci-lean.yml b/.github/workflows/ci-lean.yml new file mode 100644 index 0000000000..f860859a6c --- /dev/null +++ b/.github/workflows/ci-lean.yml @@ -0,0 +1,26 @@ +name: CI Lean4 + + +on: + push: + branches: [ main ] + paths: [ spectec/**, document/** ] + + pull_request: + branches: [ main ] + paths: [ spectec/**, document/** ] + +jobs: + test-lean: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Elan + run: | + curl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh -s -- -y + echo "$HOME/.elan/bin" >> $GITHUB_PATH + - name: Run Lean.wasm + working-directory: spectec/test-lean4 + run: | + lean Wasm.lean \ No newline at end of file diff --git a/spectec/backend-lean4/dune b/spectec/backend-lean4/dune new file mode 100644 index 0000000000..e2c7b61b63 --- /dev/null +++ b/spectec/backend-lean4/dune @@ -0,0 +1,5 @@ +(library + (name backend_lean4) + (libraries il) + (modules print) +) \ No newline at end of file diff --git a/spectec/backend-lean4/print.ml b/spectec/backend-lean4/print.ml new file mode 100644 index 0000000000..448452cd4c --- /dev/null +++ b/spectec/backend-lean4/print.ml @@ -0,0 +1,764 @@ +open Il.Ast +open Util.Source + +module StringSet = Set.Make(String) + +let iter_prem_rels_list = ["Forall"; "Forall₂"; "Forall₃"] +let iter_exp_lst_funcs = ["List.map"; "List.zipWith"; "list_map3"] +let iter_exp_opt_funcs = ["Option.map"; "option_zipWith"; "option_map3"] +let error at msg = Util.Error.error at "Lean4 translation" msg + +(* List of declaration ids that are hand-coded in the preamble *) +let builtins = [ "disjoint_"; "setminus1_"; "setminus_" ] + +let rec list_split (f : 'a -> bool) = function + | [] -> ([], []) + | x :: xs when f x -> let x_true, x_false = list_split f xs in + (x :: x_true, x_false) + | xs -> ([], xs) + +type exptype = + | LHS + | RHS + | REL + +let var_prefix = "var_" + +let remove_iter_from_type t = + match t.it with + | IterT (t', _) -> t' + | _ -> t +let empty_name s = match s with + | "" -> "NO_NAME" + | _ -> s + +let is_typ_bind b = match b.it with + | TypB _ -> true + | _ -> false + +let string_of_list_prefix prefix delim str_func ls = + match ls with + | [] -> "" + | _ -> prefix ^ String.concat delim (List.map str_func ls) + +let string_of_list_suffix suffix delim str_func ls = + match ls with + | [] -> "" + | _ -> String.concat delim (List.map str_func ls) ^ suffix + +let string_of_list prefix suffix delim str_func ls = + match ls with + | [] -> "" + | _ -> prefix ^ String.concat delim (List.map str_func ls) ^ suffix + +let square_parens s = "[" ^ s ^ "]" +let parens s = "(" ^ s ^ ")" +let curly_parens s = "{" ^ s ^ "}" +let comment_parens s = "/- " ^ s ^ " -/" + +let family_type_suffix = "entry" + +let env_ref = ref Il.Env.empty + +let is_record_typ inst = + match inst.it with + | InstD (_, _, {it = StructT _; _}) -> true + | _ -> false + +let is_variant_typ inst = + match inst.it with + | InstD (_, _, {it = VariantT _; _}) -> true + | _ -> false + +let is_alias_typ inst = + match inst.it with + | InstD (_, _, {it = AliasT _; _}) -> true + | _ -> false + +let is_alias_typ_def def = + match def.it with + | TypD(_ , _, [{it = InstD (_, _, {it = AliasT _; _}); _}]) -> true + | _ -> false + +let check_trivial_append env typ = + match typ.it with + | IterT (_t, _) -> true (* check_trivial_append env t *) (* JB: Why not trivial? *) + | VarT (id, _) -> + begin match (Il.Env.find_opt_typ env id) with + | Some (_, [inst]) when is_record_typ inst -> true + | _ -> false + end + | _ -> false + +let is_inductive d = + match d.it with + | RelD _ -> true + | TypD(_, _, [inst]) when is_variant_typ inst || is_alias_typ inst -> true + | _ -> false + +let comment_desc_def d = + match d.it with + | TypD (_, _, [inst]) when is_alias_typ inst -> "Type Alias Definition" + | TypD (_, _, [inst]) when is_variant_typ inst -> "Inductive Type Definition" + | TypD (_, _, [inst]) when is_record_typ inst -> "Record Creation Definition" + | TypD _ -> "Type Family Definition" + | RecD [_] -> "Recursive Definition" + | RecD _ -> "Recursive Definitions" + | DecD (_, _, _, []) -> "Axiom Definition" + | DecD _ -> "Auxiliary Definition" + | RelD _ -> "Inductive Relations Definition" + | HintD _ -> "Hint Definition" + | GramD _ -> "Grammar Production Definition" + +let render_unop unop = + match unop with + | `NotOp -> "!" + | `PlusOp -> "" + | `MinusOp -> "0 - " +let render_binop binop = + match binop with + | `AndOp -> " && " + | `OrOp -> " || " + | `ImplOp -> " -> " + | `EquivOp -> " <-> " + | `AddOp -> " + " + | `SubOp -> " - " + | `MulOp -> " * " + | `DivOp -> " / " + | `ModOp -> " mod " + | `PowOp -> " ^ " + +let render_cmpop cmpop = + match cmpop with + | `EqOp -> " == " + | `NeOp -> " != " + | `LtOp -> " < " + | `GtOp -> " > " + | `LeOp -> " <= " + | `GeOp -> " >= " + +let is_atomid a = + match a.it with + | Xl.Atom.Atom _ -> true + | _ -> false + +let render_atom a = + match a.it with + | Xl.Atom.Atom a -> a + | _ -> "" + + let render_id a = match a with + | "rec" -> "rec_" + | "bool" -> "nat_of_bool" + | "mut" | "local" | "export" | "import" | "catch" | "syntax" | "at" + -> "«" ^ a ^ "»" + | _ -> a + +let render_mixop (m : mixop) = + (match m with + | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> a + | mixop -> String.concat "" (List.map ( + fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map render_atom)) mixop + ) + ) + +let get_bind_id b = + match b.it with + | ExpB (id, _) | TypB id | DefB (id, _, _) | GramB (id, _, _) -> id.it + +let get_param_id b = + match b.it with + | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> id.it + +let render_numtyp nt = + match nt with + | `NatT -> "Nat" + | `IntT -> "Nat" + | `RatT -> "Nat" + | `RealT -> "Nat" + +let transform_case_tup e = + match e.it with + | TupE exps -> exps + | _ -> [e] + +let transform_case_typ t = + match t.it with + | TupT typs -> List.map snd typs + | _ -> [t] + +let transform_case_args t = + match t.it with + | TupT typs -> typs + | _ -> [(VarE ("_" $ t.at) $$ t.at % t, t)] + +let get_type_args t = + match t.it with + | VarT (_, args) -> args + | _ -> error t.at ("Following type should be a variable type: " ^ Il.Print.string_of_typ t) + +let rec render_param_type exp_type param = + match param.it with + | ExpP (_, typ) -> render_type exp_type typ + | TypP _ -> "Type" + | DefP (_, params, typ) -> + string_of_list_suffix " -> " " -> " (render_param_type exp_type) params ^ render_type exp_type typ + | GramP _ -> comment_parens ("Unsupported param: " ^ Il.Print.string_of_param param) + +and render_type exp_type typ = + let rt_func = render_type exp_type in + match typ.it with + | VarT (id, []) -> render_id id.it + | VarT (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) + | BoolT -> "Bool" + | NumT nt -> render_numtyp nt + | TextT -> "String" + | TupT [] -> "Unit" + | TupT typs -> String.concat " × " (List.map (fun (_, t) -> rt_func t) typs) + | IterT (t, Opt) -> parens ("Option " ^ rt_func t) + | IterT (t, _) -> parens ("List " ^ rt_func t) + +and render_exp exp_type exp = + let r_func = render_exp exp_type in + match exp.it with + | VarE id -> render_id id.it + | BoolE b -> string_of_bool b + | NumE (`Nat n) -> Z.to_string n (* TODO fix nums *) + | NumE (`Int n) -> Z.to_string n (* TODO fix nums *) + | NumE (`Rat n) -> Q.to_string n (* TODO fix nums *) + | NumE (`Real n) -> string_of_float n (* TODO fix nums *) + | TextE s -> "\"" ^ String.escaped s ^ "\"" + | UnE (unop, _, e1) -> parens (render_unop unop ^ r_func e1) + | BinE (binop, _, e1, e2) -> parens (r_func e1 ^ render_binop binop ^ r_func e2) + | CmpE (cmpop, _, e1, e2) -> parens (r_func e1 ^ render_cmpop cmpop ^ r_func e2) + | TupE [] -> "()" + | TupE exps -> parens (String.concat ", " (List.map r_func exps)) + | ProjE (e, i) -> + let typs = transform_case_typ e.note in + let rec make_proj_chain idx len e = + match idx, len with + | 0, 0 -> r_func e + | i, n when i <= n -> parens ("snd " ^ r_func e) + | _ -> parens ("fst " ^ (make_proj_chain idx (len - 1) e)) + in + begin match typs with + | [_] -> r_func e + | _ -> make_proj_chain i (List.length typs - 1) e + end + | CaseE (m, e) when exp_type = LHS -> + let exps = transform_case_tup e in + begin match exps with + | [] -> "." ^ render_mixop m + | _ -> parens ("." ^ render_mixop m ^ " " ^ String.concat " " (List.map r_func exps)) + end + | CaseE (m, e) -> + let exps = transform_case_tup e in + begin match exps with + | [] -> "." ^ render_mixop m + | _ -> parens ("." ^ render_mixop m ^ " " ^ String.concat " " (List.map r_func exps)) + end + | UncaseE _ -> error exp.at "Encountered uncase. Run uncase-removal pass" + | OptE (Some e) -> parens ("some " ^ r_func e) + | OptE None -> "none" + | TheE e -> parens ("Option.get! " ^ r_func e) + | StrE fields -> "{ " ^ (String.concat ", " (List.map (fun (a, e) -> render_atom a ^ " := " ^ r_func e) fields)) ^ " }" + | DotE (e, a) -> parens (r_func e ^ "." ^ render_atom a) + | CompE (e1, e2) -> parens (r_func e1 ^ " ++ " ^ r_func e2) + | ListE [] -> "[]" + | ListE exps -> square_parens (String.concat ", " (List.map r_func exps)) + | LiftE e -> parens ("Option.toList " ^ r_func e) + (* | MemE (e1, e2) -> parens (r_func e1 ^ " ∈ " ^ r_func e2) *) + | MemE (e1, e2) -> parens ("List.contains" ^ " " ^ r_func e2 ^ " " ^ r_func e1) + | LenE e1 -> parens ("List.length " ^ r_func e1) + | CatE ({it = ListE [e1]; _}, e2) when exp_type = LHS -> parens (r_func e1 ^ " :: " ^ r_func e2) + | CatE (e1, e2) -> parens (r_func e1 ^ " ++ " ^ r_func e2) + | IdxE (e1, e2) -> parens (r_func e1 ^ "[" ^ r_func e2 ^ "]!") + | SliceE (e1, e2, e3) -> parens ("List.extract " ^ r_func e1 ^ " " ^ r_func e2 ^ " " ^ r_func e3) + | UpdE (e1, p, e2) -> render_path_start p e1 false e2 + | ExtE (e1, p, e2) -> render_path_start p e1 true e2 + | CallE (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) + (* Iter handling *) + | IterE (e, (ListN (n, _), [])) -> parens ("List.replicate " ^ (r_func n) ^ " " ^ (r_func e)) + | IterE (e, (_, [])) -> r_func e + | IterE (e, _) when exp_type = LHS -> r_func e + | IterE (e, (iter, iter_binds)) -> + let binds = List.map (fun (id, e) -> parens (id.it ^ " : " ^ render_type exp_type (remove_iter_from_type e.note))) iter_binds in + let iter_exps = List.map snd iter_binds in + let n = List.length iter_binds - 1 in + let lst = if iter = Opt then iter_exp_opt_funcs else iter_exp_lst_funcs in + let pred_name = match (List.nth_opt lst n) with + | Some s -> s + | None -> error exp.at "Iteration exceeded the supported amount for rocq translation" + in + parens (pred_name ^ " " ^ render_lambda binds (r_func e) ^ " " ^ + String.concat " " (List.map (render_exp exp_type) iter_exps)) + | CvtE (e1, _nt1, nt2) -> parens (r_func e1 ^ " : " ^ render_numtyp nt2) + | SubE _ -> error exp.at "Encountered subtype expression. Please run sub pass" + | IfE (cond, then_exp, else_exp) -> + parens ("if " ^ r_func cond ^ " then " ^ r_func then_exp ^ " else " ^ r_func else_exp) + +and render_arg exp_type a = + match a.it with + | ExpA e -> render_exp exp_type e + | TypA t -> render_type exp_type t + | DefA id -> render_id id.it + | _ -> comment_parens ("Unsupported arg: " ^ Il.Print.string_of_arg a) + +and render_bind exp_type b = + match b.it with + | ExpB (id, typ) -> parens (render_id id.it ^ " : " ^ render_type exp_type typ) + | TypB id -> parens (render_id id.it ^ " : Type 0") + | DefB (id, params, typ) -> + parens (render_id id.it ^ " : " ^ + string_of_list_suffix " -> " " -> " (render_param_type exp_type) params ^ + render_type exp_type typ) + | GramB _ -> comment_parens ("Unsupported bind: " ^ Il.Print.string_of_bind b) + +and render_param exp_type param = + let get_id p = + match p.it with + | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> id.it + in + parens (get_id param ^ " : " ^ render_param_type exp_type param) + + +(* PATH Functions *) +and transform_list_path (p : path) = + match p.it with + | RootP -> [] + | IdxP (p', _) | SliceP (p', _, _) | DotP (p', _) when p'.it = RootP -> [] + | IdxP (p', _) | SliceP (p', _, _) | DotP (p', _) -> p' :: transform_list_path p' + +and render_lambda binds text = + parens ("fun " ^ String.concat " " binds ^ " => " ^ text) + +and render_path_start (p : path) start_exp is_extend end_exp = + let paths = List.rev (p :: transform_list_path p) in + (render_path paths (start_exp.note) p.at 0 (Some start_exp) is_extend end_exp) + +and render_path (paths : path list) typ at n name is_extend end_exp = + let render_record_update t1 t2 t3 = + parens (t1 ^ " <| " ^ t2 ^ " := " ^ t3 ^ " |>") + in + let r_func_e = render_exp RHS in + let is_dot p = (match p.it with + | DotP _ -> true + | _ -> false + ) in + let list_name num = (match name with + | Some exp -> exp + | None -> VarE ((var_prefix ^ string_of_int num) $ no_region) $$ no_region % typ + ) in + let new_name_typ = remove_iter_from_type (list_name n).note in + let new_name = var_prefix ^ string_of_int (n + 1) in + match paths with + (* End logic for extend *) + | [{it = IdxP (_, e); _}] when is_extend -> + let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("List.modify " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ render_lambda [bind] extend_term) + | [{it = DotP (_, a); _}] when is_extend -> + let projection_term = parens (render_atom a ^ " " ^ r_func_e (list_name n)) in + let extend_term = parens (projection_term ^ " ++ " ^ r_func_e end_exp) in + render_record_update (r_func_e (list_name n)) (render_atom a) extend_term + | [{it = SliceP (_, e1, e2); _}] when is_extend -> + let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ render_lambda [bind] extend_term) + (* End logic for update *) + | [{it = IdxP (_, e); _}] -> + let bind = render_bind RHS (ExpB ("_" $ no_region, new_name_typ) $ no_region) in + parens ("List.modify " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] (r_func_e end_exp)) + | [{it = DotP (_, a); _}] -> + render_record_update (r_func_e (list_name n)) (render_atom a) (r_func_e end_exp) + | [{it = SliceP (_, e1, e2); _}] -> + parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ r_func_e end_exp) + (* Middle logic *) + | {it = IdxP (_, e); note; _} :: ps -> + let path_term = render_path ps note at (n + 1) None is_extend end_exp in + let new_name = var_prefix ^ string_of_int (n + 1) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] path_term) + | ({it = DotP _; note; _} as p) :: ps -> + let (dot_paths, ps') = list_split is_dot (p :: ps) in + let (end_atom, dot_paths') = match List.rev dot_paths with + | {it = DotP (_, a'); _} :: ds -> (a', ds) + | _ -> assert false (* Impossible since it has p *) + in + let projection_term = List.fold_right (fun p acc -> + match p.it with + | DotP (_, a') -> + DotE (acc, a') $$ no_region % p.note + | _ -> error at "Should be a record access" (* Should not happen *) + ) dot_paths' (list_name n) in + let update_fields = String.concat ", " (List.map (fun p -> + match p.it with + | DotP (_, a) -> render_atom a + | _ -> error at "Should be a record access" + ) dot_paths) in + let new_term = parens (render_atom end_atom ^ " " ^ r_func_e projection_term) in + let new_exp = DotE (projection_term, end_atom) $$ no_region % note in + if ps' = [] + then ( + let final_term = if is_extend then parens (new_term ^ " ++ " ^ r_func_e end_exp) else r_func_e end_exp in + render_record_update (r_func_e (list_name n)) update_fields final_term + ) + else ( + let path_term = render_path ps' note at n (Some new_exp) is_extend end_exp in + render_record_update (r_func_e (list_name n)) update_fields path_term + ) + | ({it = SliceP (_, _e1, _e2); _} as p) :: _ps -> + (* TODO - this is not entirely correct. Still unsure how to implement this as a term *) + (* let new_typ = transform_type' NORMAL note in + let path_term = render_path ps new_typ at (n + 1) None is_extend end_exp $@ transform_type' NORMAL note in + let new_name = var_prefix ^ string_of_int (n + 1) in + let lambda_typ = T_arrowtype [new_name_typ; new_typ] in + T_app (T_exp_basic T_sliceupdate $@ anytype', + [list_name n; transform_exp NORMAL e1; transform_exp NORMAL e2; T_lambda ([(new_name, new_name_typ)], path_term) $@ lambda_typ]) *) + comment_parens (Il.Print.string_of_path p) + (* Catch all error if we encounter empty list or RootP *) + | _ -> error at "Paths should not be empty" + +and render_binders (binds : bind list) = + string_of_list_prefix " " " " (render_bind RHS) binds + +let render_binders_ids (binds : bind list) = + string_of_list_prefix " " " " get_bind_id binds + +let render_match_binders params = + String.concat ", " (List.map get_param_id params) + +let render_params params = + string_of_list_prefix " " " " (render_param RHS) params + +let render_match_args args = + string_of_list_prefix " " ", " (render_arg LHS) args + + +let string_of_eqtype_proof recursive (cant_do_equality: bool) id (binds : bind list) = + let binders = render_binders binds in + let binder_ids = render_binders_ids binds in + (* Decidable equality proof *) + (* e.g. + Definition functype_eq_dec : forall (tf1 tf2 : functype), + {tf1 = tf2} + {tf1 <> tf2}. + Proof. decidable_equality. Defined. + Definition functype_eqb v1 v2 : bool := functype_eq_dec v1 v2. + Definition eqfunctypeP : Equality.axiom functype_eqb := + eq_dec_Equality_axiom functype functype_eq_dec. + + HB.instance Definition _ := hasDecEq.Build (functype) (eqfunctypeP). + *) + (if cant_do_equality then comment_parens "FIXME - No clear way to do decidable equality" ^ "\n" else "") ^ + (match recursive with + | true -> + + "Fixpoint " ^ id ^ "_eq_dec" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ ") {struct v1} :\n" ^ + " {v1 = v2} + {v1 <> v2}.\n" ^ + let proof = if cant_do_equality then "Admitted" else "decide equality; do ? decidable_equality_step. Defined" in + "Proof. " ^ proof ^ "\n\n" + | false -> + "Definition " ^ id ^ "_eq_dec : forall" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ "),\n" ^ + " {v1 = v2} + {v1 <> v2}.\n" ^ + + let proof = if cant_do_equality then "Admitted" else "do ? decidable_equality_step. Defined" in + "Proof. " ^ proof ^ "\n\n") ^ + + "Definition " ^ id ^ "_eqb" ^ binders ^ " (v1 v2 : " ^ id ^ binder_ids ^ ") : bool :=\n" ^ + " is_left" ^ parens (id ^ "_eq_dec" ^ binder_ids ^ " v1 v2") ^ ".\n" ^ + "Definition eq" ^ id ^ "P" ^ binders ^ " : Equality.axiom " ^ parens (id ^ "_eqb" ^ binder_ids) ^ " :=\n" ^ + " eq_dec_Equality_axiom " ^ parens (id ^ binder_ids) ^ " " ^ parens (id ^ "_eq_dec" ^ binder_ids) ^ "\n\n" ^ + "HB.instance Definition _" ^ binders ^ " := hasDecEq.Build " ^ parens (id ^ binder_ids) ^ " " ^ parens ("eq" ^ id ^ "P" ^ binder_ids) ^ ".\n" ^ + "Hint Resolve " ^ id ^ "_eq_dec : eq_dec_db" + +let string_of_relation_args typ = + string_of_list "" " -> " " -> " (render_type REL) (transform_case_typ typ) + +let rec render_prem prem = + let r_func = render_prem in + match prem.it with + | IfPr exp -> render_exp REL exp + | RulePr (id, _m, exp) -> parens (id.it ^ string_of_list_prefix " " " " (render_exp REL) (transform_case_tup exp)) + | NegPr p -> parens ("¬" ^ r_func p) + | ElsePr -> "True " ^ comment_parens ("Unsupported premise: otherwise") (* Will be removed by an else pass *) + | IterPr (p, (_, [])) -> r_func p + | IterPr (p, (iter, ps)) -> + let option_conversion s = if iter = Opt then parens ("Option.toList " ^ s) else s in + let binds = List.map (fun (id, e) -> parens (id.it ^ " : " ^ render_type REL (remove_iter_from_type e.note))) ps in + let iter_exps = List.map snd ps in + let n = List.length ps - 1 in + let pred_name = match (List.nth_opt iter_prem_rels_list n) with + | Some s -> s + | None -> error prem.at "Iteration exceeded the supported amount for rocq translation" + in + pred_name ^ " " ^ render_lambda binds (r_func p) ^ " " ^ + String.concat " " (List.map (render_exp REL) iter_exps |> List.map option_conversion) + | LetPr _ -> + "True " ^ comment_parens ("Unsupported premise: " ^ Il.Print.string_of_prem prem) + +let render_typealias id binds typ = + "abbrev " ^ render_id id ^ render_binders binds ^ " : Type := " ^ render_type RHS typ + +let render_record id binds fields = + let constructor_name = "MK" ^ id in + let inhabitance_binders = render_binders binds in + let binders = render_binders_ids binds in + + (* Standard Record definition *) + "structure " ^ id ^ inhabitance_binders ^ " where " ^ constructor_name ^ " ::\n " ^ + String.concat "\n " (List.map (fun (a, (_, typ, _), _) -> + render_atom a ^ " : " ^ render_type RHS typ) fields) ^ "\n" ^ + + "deriving Inhabited, BEq\n\n" ^ + + (* Append instance *) + "def _append_" ^ id ^ inhabitance_binders ^ " (arg1 arg2 : " ^ parens (id ^ binders) ^ ") : " ^ render_id id ^ " where" ^ + "\n " ^ String.concat "\n " ((List.map (fun (a, (_, t, _), _) -> + let record_id' = render_atom a in + if (check_trivial_append !env_ref t) + then record_id' ^ " := " ^ "arg1." ^ record_id' ^ " ++ arg2." ^ record_id' + else record_id' ^ " := " ^ "arg1." ^ record_id' ^ " " ^ comment_parens "FIXME - Non-trivial append" + )) fields) ^ "\n" ^ + "instance : Append " ^ render_id id ^ " where\n append arg1 arg2 := _append_" ^ id ^ " arg1 arg2\n\n" + +let rec has_typ id t = + match t.it with + | VarT (id', _) -> id'.it = id + | IterT (t', _) -> has_typ id t' + | TupT pairs -> List.exists (fun (_, t') -> has_typ id t') pairs + | _ -> false + +let cant_do_equality binds cases = + (List.exists is_typ_bind binds) || + (List.exists (fun (_, (binds', _, _), _) -> List.exists is_typ_bind binds') cases) + +let render_case_typs t = + let typs = transform_case_args t in + string_of_list_prefix " " " " (fun (e, t) -> + parens (render_exp RHS e ^ " : " ^ render_type RHS t)) typs + +let render_variant_typ id binds cases = + "inductive " ^ render_id id ^ render_binders binds ^ " : Type where\n " ^ + String.concat "\n " (List.map (fun (m, (_, t, _), _) -> + "| " ^ render_mixop m ^ render_case_typs t ^ " : " ^ render_id id ^ render_binders_ids binds + ) cases) ^ + "\nderiving Inhabited, BEq\n" + +let clauses_have_same_args c1 c2 = + match (c1.it, c2.it) with + | (DefD (binds1, args1, _, _), DefD (binds2, args2, _, _)) -> + Il.Eq.eq_list Il.Eq.eq_bind binds1 binds2 && + Il.Eq.eq_list Il.Eq.eq_arg args1 args2 + +let group_clauses_by_same_args clauses = + let group_helper acc clause = + match acc with + | [] -> [[clause]] + | group :: rest -> + let representative = List.hd group in + if clauses_have_same_args representative clause then + (group @ [clause]) :: rest + else + [clause] :: group :: rest + in + List.fold_left group_helper [] clauses |> List.rev + +let render_function_def id params r_typ clauses = + let groups = group_clauses_by_same_args clauses in + "def " ^ render_id id ^ " : ∀ " ^ render_params params ^ " , " ^ render_type RHS r_typ ^ "\n" ^ + String.concat "\n" (List.map (fun group -> match (List.hd group).it with + | DefD (_, args, _, _) -> + " |" ^ render_match_args args ^ " =>\n " ^ + String.concat "\n " (List.map (fun clause -> + let DefD (_, _, exp, prems) = clause.it in + match prems with + | [] -> render_exp RHS exp + | [{it = ElsePr; _}] -> " " ^ render_exp RHS exp + | _ -> + "if " ^ String.concat " && " (List.map (fun prem -> render_prem prem) prems) ^ " then\n " ^ + render_exp RHS exp ^ "\n else" + ) group) + ) groups) ^ + "\n" + +let render_relation id typ rules = + "inductive " ^ id ^ " : " ^ string_of_relation_args typ ^ "Prop where\n " ^ + String.concat "\n " (List.map (fun rule -> match rule.it with + | RuleD (rule_id, binds, _, exp, prems) -> + let string_prems = string_of_list "\n " " ->\n " " ->\n " (render_prem) prems in + let forall_quantifiers = string_of_list "forall " ", " " " (render_bind REL) binds in + "| " ^ render_id rule_id.it ^ " : " ^ forall_quantifiers ^ string_prems ^ id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) + ) rules) + +let render_axiom id params r_typ = + "opaque " ^ render_id id.it ^ " : " ^ + string_of_list "forall " ", " " " (render_param RHS) params ^ + render_type RHS r_typ ^ " := opaqueDef" + +let render_rel_axiom id typ = + "opaque " ^ id.it ^ " : " ^ string_of_relation_args typ ^ "Prop" + +let render_global_declaration id typ exp = + "def " ^ id.it ^ " : " ^ render_type RHS typ ^ " := " ^ render_exp RHS exp + +let get_type_alias_id def = + match def.it with + | TypD (id, _, [inst]) when is_alias_typ inst -> Some id.it + | _ -> None + +let has_prems c = + match c.it with + | DefD (_, _, _, prems) -> prems <> [] + +(* In-order traversal of args, collecting variables. Only support expressions that we expect in function patterns *) +let rec + args_vars (args : arg list) : string list = List.concat_map arg_vars args +and + arg_vars (arg : arg) : string list = match arg.it with + | ExpA e -> exp_vars e + | TypA _ -> [] + | DefA id -> [id.it] + | _ -> [] +and + exp_vars (e : exp) : string list = match e.it with + | VarE id -> [id.it] + | CaseE (_, e1) -> exp_vars e1 + | TupE exps -> List.concat_map exp_vars exps + | _ -> [] + +(* Check if the args mention a pattern variable more than once *) +let has_nonlinear_pattern c = + match c.it with + | DefD (binds, args, _, _) -> + let bound_ids = List.map get_bind_id binds in + let rec go seen (vars : string list) = + match vars with + | [] -> false + | id :: rest -> + if List.mem id bound_ids then + if List.mem id seen then true + else go (id :: seen) rest + else + go seen rest + in + go [] (args_vars args) + +let rec is_bool_premise prem = + match prem.it with + | IfPr _exp -> true + | NegPr prem -> is_bool_premise prem + | _ -> false + +let is_else_premise prem = + match prem.it with + | ElsePr -> true + | _ -> false + +let is_supported_clause _id clauses = + match List.rev clauses with + | [] -> true + | [c] -> not (has_prems c) + | last :: others -> + (* Printf.eprintf "Checking supported clauses; %s\n" (String.concat "\n" (List.map (Il.Print.string_of_clause id) clauses)); *) + (let DefD (_, _, _, prems) = last.it in match prems with | [p] -> is_else_premise p | _ -> false) && + List.for_all (fun c -> + let DefD (_, _, _, prems) = c.it in + List.for_all is_bool_premise prems + ) others + +let is_supported_function id _params _r_typ clauses = + List.for_all (fun c -> not (has_nonlinear_pattern c)) clauses && + List.for_all (is_supported_clause id) (group_clauses_by_same_args clauses) + +let is_axiom def = + match def.it with + | DecD (_, _, _, _clauses) -> true + | _ -> false + +let is_builtin def = + match def.it with + | TypD (id, _, _) -> List.mem id.it builtins + | DecD (id, _, _, _) -> List.mem id.it builtins + | RelD (id, _, _, _) -> List.mem id.it builtins + | _ ->false + +let rec string_of_def def = + comment_parens (comment_desc_def def ^ " at: " ^ Util.Source.string_of_region def.at) ^ "\n" ^ + begin + if is_builtin def then "/- elided, builtin -/" else + match def.it with + | TypD (id, _, [{it = InstD (binds, _, {it = AliasT typ; _}); _}]) -> + render_typealias id.it binds typ + | TypD (id, _, [{it = InstD (binds, _, {it = StructT typfields; _}); _}])-> + render_record id.it binds typfields + | TypD (id, _, [{it = InstD (binds, _, {it = VariantT typcases; _}); _}]) -> + render_variant_typ id.it binds typcases + | DecD (id, [], typ, [{it = DefD ([], [], exp, _); _}]) -> + render_global_declaration id typ exp + | DecD (id, params, typ, []) -> + render_axiom id params typ + | DecD (id, params, typ, clauses) -> + if is_supported_function id params typ clauses then + render_function_def id.it params typ clauses + else + render_axiom id params typ + | RelD (id, _, typ, []) -> + render_rel_axiom id typ + | RelD (id, _, typ, rules) -> + render_relation id.it typ rules + (* Mutual recursion *) + | RecD defs -> + begin match defs with + | [] -> "" + | [d] -> string_of_def d + (* HACK - this is simply to deal with functions that are not supposed to be axioms. + The functions that are supposed to be axioms should not be mutually recursive anyways. + *) + | (_d :: _defs') when List.exists is_axiom defs -> + String.concat "\n\n" (List.map string_of_def defs) + | (_d :: _defs') -> + "mutual\n" ^ + String.concat "\n\n" (List.map string_of_def defs) ^ "\n\n" ^ + "end" + end + | _ -> error def.at ("Unsupported def: " ^ Il.Print.string_of_def def) + end + +let exported_string = {|/- Preamble -/ +set_option linter.unusedVariables false +set_option match.ignoreUnusedAlts true + +instance : Append (Option a) where + append := fun o1 o2 => match o1 with | none => o2 | _ => o1 + +def Forall (R : α → Prop) (xs : List α) : Prop := + ∀ x ∈ xs, R x +def Forall₂ (R : α → β → Prop) (xs : List α) (ys : List β) : Prop := + ∀ x y, (x,y) ∈ List.zip xs ys → R x y +def Forall₃ (R : α → β → γ → Prop) (xs : List α) (ys : List β) (zs : List γ) : Prop := + ∀ x y z, (x,y,z) ∈ List.zip xs (List.zip ys zs) → R x y z + +macro "opaqueDef" : term => `(by first | exact Inhabited.default | intros; assumption) + +/- written manually due to `BEq` constraint -/ +def disjoint_ (X : Type) [BEq X] : ∀ (var_0 : (List X)), Bool + | [] => true + | (w :: w'_lst) => ((!(List.contains w'_lst w)) && (disjoint_ X w'_lst)) + +/- written manually due to `BEq` constraint -/ +def setminus_ (X : Type) [BEq X] (l1 l2 : List X) : List X := + l1.filter (fun x => !(List.contains l2 x)) +|} + + +let rec is_valid_def def = + match def.it with + | GramD _ | HintD _ -> false + | RecD defs -> List.for_all is_valid_def defs + | _ -> true + +let string_of_script (il : script) = + env_ref := Il.Env.env_of_script il; + exported_string ^ + "/- Generated Code -/\n\n" ^ + String.concat "\n\n" (List.filter is_valid_def il |> List.map string_of_def) \ No newline at end of file diff --git a/spectec/src/backend-rocq/disamb.ml b/spectec/src/backend-rocq/disamb.ml new file mode 100644 index 0000000000..20f8aa77d9 --- /dev/null +++ b/spectec/src/backend-rocq/disamb.ml @@ -0,0 +1,189 @@ +open Il.Ast +open Util.Source +open Il.Walk +open Il +open Xl + +module StringMap = Map.Make(String) + +type env = { + mutable disamb_map: (string * string) list StringMap.t; + mutable il_env: Il.Env.t +} + +let new_env () = { + disamb_map = StringMap.empty; + il_env = Il.Env.empty +} + +let empty_info: region * Xl.Atom.info = (no_region, {def = ""; case = ""}) + +let env_ref: env ref = ref (new_env ()) + +let _print_env () = + List.iter (fun (typ_id, ss) -> + print_endline "Entry: "; + print_endline ("Type id: " ^ typ_id); + print_endline (String.concat " " (List.map (fun (base_id, _) -> base_id) ss)) + ) (StringMap.bindings !env_ref.disamb_map) + +let error at msg = Util.Error.error at "Rocq Generation" msg + +let (let*) = Option.bind + +let register_id typ_id base_id id = + !env_ref.disamb_map <- StringMap.update typ_id (fun opt -> + match opt with + | Some ss -> Some ((base_id, id) :: ss) + | None -> Some [(base_id, id)] + ) !env_ref.disamb_map + +let is_atomid a = + match a.it with + | Atom.Atom _ -> true + | _ -> false + +let get_atom_id a = + match a.it with + | Atom.Atom s -> s + | _ -> "" + +let get_mixop_s m = + String.concat "" (List.map ( + fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map get_atom_id)) m + ) + +let t_atom_opt typ_id a = + match a.it with + | Atom.Atom s -> + let* ss = StringMap.find_opt typ_id !env_ref.disamb_map in + let* _, s' = List.find_opt (fun (base_s, _) -> s = base_s) ss in + Some {a with it = Atom.Atom s'} + | _ -> Some a + +let t_atom typ_id a = + match (t_atom_opt typ_id a) with + | Some a -> a + | _ -> assert false + (* | None -> error a.at "Could not find modified atom id" *) + +let t_mixop typ_id m = + match m with + | [a] :: tail when List.for_all ((=) []) tail -> [t_atom typ_id a] :: tail + | _ -> + let s = get_mixop_s m in + let new_atom = Atom.Atom s $$ empty_info in + [[t_atom typ_id new_atom]] + (* List.map (fun atoms -> List.map (t_atom typ_id) atoms) m *) + +let t_exp e = + match e.it with + | CaseE (m, e') -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) in + {e with it = CaseE (t_mixop name m, e')} + | StrE fields -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) in + let fields' = List.map (fun (a, e') -> (t_atom name a, e')) fields in + {e with it = StrE fields'} + | DotE (e', a) -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e'.note) in + {e with it = DotE (e', t_atom name a)} + | _ -> e + +let t_path p = + match p.it with + | DotP (p', a) -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p'.note) in + {p with it = DotP (p', t_atom name a)} + | _ -> p + +let rec t_rule_new rel_id base_r_id r_id = + let new_id = rel_id ^ "__" ^ r_id in + let lst = StringMap.bindings !env_ref.disamb_map in + begin match (List.find_opt (fun (_, ss) -> List.exists (fun (_, s') -> r_id = s') ss) lst) with + | Some _ -> t_rule_new rel_id base_r_id new_id + | None when + Il.Env.mem_typ !env_ref.il_env (r_id $ no_region) || + Il.Env.mem_def !env_ref.il_env (r_id $ no_region) -> + t_rule_new rel_id base_r_id new_id + | None -> + register_id rel_id base_r_id r_id; + r_id + end + +let rec t_atom_new typ_id base_a a = + match base_a.it, a.it with + | Atom.Atom base_s, Atom.Atom s -> + let lst = StringMap.bindings !env_ref.disamb_map in + begin match (List.find_opt (fun (_, ss) -> List.exists (fun (_, s') -> s = s') ss) lst) with + | Some _ -> + t_atom_new typ_id base_a {a with it = Xl.Atom.Atom (typ_id ^ "_" ^ s)} + | None when + Il.Env.mem_typ !env_ref.il_env (s $ no_region) || + Il.Env.mem_def !env_ref.il_env (s $ no_region) -> + t_atom_new typ_id base_a {a with it = Xl.Atom.Atom (typ_id ^ "_" ^ s)} + | None -> + register_id typ_id base_s s; + {a with it = Atom.Atom s} + end + | _-> a + +let t_mixop_new typ_id m = + match m with + | [a] :: tail when List.for_all ((=) []) tail -> [t_atom_new typ_id a a] :: tail + | _ -> + let s = get_mixop_s m in + let new_atom = Atom.Atom s $$ empty_info in + [[t_atom_new typ_id new_atom new_atom]] + + + (* List.map (fun atoms -> List.map (fun a -> t_atom_new typ_id a a) atoms) m *) + +let t_inst t typ_id inst = + let InstD (binds, args, deftyp) = inst.it in + let deftyp' = match deftyp.it with + | VariantT typcases -> VariantT (List.map (fun (m, (binds', typ, prems), h) -> + (t_mixop_new typ_id m, + (List.map (transform_bind t) binds', transform_typ t typ, List.map (transform_prem t) prems), + h) + ) typcases) + | StructT typfields -> StructT (List.map (fun (a, (binds', typ, prems), h) -> + (t_atom_new typ_id a a, (List.map (transform_bind t) binds', transform_typ t typ, List.map (transform_prem t) prems), h) + ) typfields) + | AliasT typ -> AliasT (transform_typ t typ) in + { inst with it = InstD (List.map (transform_bind t) binds, List.map (transform_arg t) args, {deftyp with it = deftyp'})} + +let rec t_def def = + let t = { base_transformer with transform_path = t_path; transform_exp = t_exp } in + match def.it with + | TypD (typ_id, params, insts) -> + { def with it = TypD (typ_id, List.map (transform_param t) params, List.map (t_inst t typ_id.it) insts) } + | RecD defs -> { def with it = RecD (List.map t_def defs) } + | RelD (id, m, typ, rules) -> + { def with it = RelD (id, m, typ, + List.map (fun rule -> + let RuleD (r_id, binds, m, exp, prems) = rule.it in + { rule with it = RuleD ((t_rule_new id.it r_id.it r_id.it) $ r_id.at, + List.map (transform_bind t) binds, m, transform_exp t exp, List.map (transform_prem t) prems) } + ) rules) } + | _ -> transform_def t def + +(* Remove overlaps created by sub expansion *) +let remove_overlapping_clauses clauses = + Util.Lib.List.nub (fun clause clause' -> match clause.it, clause'.it with + | DefD (_, args, exp, _), DefD (_, args', exp', _) -> + let reduced_exp = Eval.reduce_exp !env_ref.il_env exp in + let reduced_exp' = Eval.reduce_exp !env_ref.il_env exp' in + Eq.eq_list Eq.eq_arg args args' && Eq.eq_exp reduced_exp reduced_exp' + ) clauses + +let rec rem_overlap_def def = + match def.it with + | DecD (id, params, typ, clauses) -> {def with it = DecD (id, params, typ, remove_overlapping_clauses clauses)} + | RecD defs -> {def with it = RecD (List.map rem_overlap_def defs)} + | _ -> def + +let transform il = + !env_ref.il_env <- Il.Env.env_of_script il; + List.map rem_overlap_def il |> + List.map t_def \ No newline at end of file diff --git a/spectec/src/backend-rocq/dune b/spectec/src/backend-rocq/dune new file mode 100644 index 0000000000..a9b1519f67 --- /dev/null +++ b/spectec/src/backend-rocq/dune @@ -0,0 +1,5 @@ +(library + (name backend_rocq) + (libraries il middlend xl) + (modules print disamb) +) diff --git a/spectec/src/backend-rocq/print.ml b/spectec/src/backend-rocq/print.ml new file mode 100644 index 0000000000..21dcc636e3 --- /dev/null +++ b/spectec/src/backend-rocq/print.ml @@ -0,0 +1,945 @@ +open Il.Ast +open Util.Source +open Il.Walk + +module StringSet = Set.Make(String) + +type rocq_env = { + mutable tf_set : StringSet.t; + mutable il_env : Il.Env.t; + mutable proj_set : StringSet.t +} + +let new_env () = { + tf_set = StringSet.empty; + il_env = Il.Env.empty; + proj_set = StringSet.empty +} + +let iter_prem_rels_list = ["List.Forall"; "List.Forall2"; "List_Forall3"] +let iter_exp_lst_funcs = ["seq.map"; "list_zipWith"; "list_map3"] +let iter_exp_opt_funcs = ["option_map"; "option_zipWith"; "option_map3"] +let error at msg = Util.Error.error at "Rocq translation" msg + +let env_ref = ref (new_env ()) + +let rec list_split (f : 'a -> bool) = function + | [] -> ([], []) + | x :: xs when f x -> let x_true, x_false = list_split f xs in + (x :: x_true, x_false) + | xs -> ([], xs) + +let rec is_type_family t = + match t.it with + | VarT (id, _) -> StringSet.mem id.it !env_ref.tf_set + | IterT (t', _) -> is_type_family t' + | TupT typs -> List.exists (fun (_, t') -> is_type_family t') typs + | _ -> false + +let is_type_family_param p = + match p.it with + | ExpP (_, t) -> is_type_family t + | _ -> false + +let get_type_var t = + match t.it with + | VarT (id, _) when not (Il.Env.mem_typ !env_ref.il_env id) -> [id.it] + | _ -> [] + +let needs_inh_class e = + match e.it with + | IdxE _ | TheE _ -> (get_type_var e.note, false) + | _ -> ([], true) + +let needs_inh_class_path p = + match p.it with + | IdxP _ -> (get_type_var p.note, false) + | _ -> ([], true) + +type exptype = + | LHS + | RHS + | REL + +let var_prefix = "var_" + +(* let render_rule_id rel_id id = rel_id ^ "__" ^ id *) + +let reserved_ids = + ["N"; "in"; "In"; + "S"; + "return"; + "if"; + "bool"; + "prod"; + "at"; + "()"; "tt"; + "Import"; "Export"; + "seq"; + "List"; "String"; + "Type"; "list"; "nat"; + "cons"] |> StringSet.of_list + +let remove_iter_from_type t = + match t.it with + | IterT (t', _) -> t' + | _ -> t +let empty_name s = match s with + | "" -> "NO_NAME" + | _ -> s + +let is_typ_bind b = match b.it with + | TypB _ -> true + | _ -> false + +let string_of_list_prefix prefix delim str_func ls = + match ls with + | [] -> "" + | _ -> prefix ^ String.concat delim (List.map str_func ls) + +let string_of_list_suffix suffix delim str_func ls = + match ls with + | [] -> "" + | _ -> String.concat delim (List.map str_func ls) ^ suffix + +let string_of_list prefix suffix delim str_func ls = + match ls with + | [] -> "" + | _ -> prefix ^ String.concat delim (List.map str_func ls) ^ suffix + +let square_parens s = "[" ^ s ^ "]" +let ssreflect_square_parens s = "[::" ^ s ^ "]" +let parens s = "(" ^ s ^ ")" +let curly_parens s = "{" ^ s ^ "}" +let comment_parens s = "(* " ^ s ^ " *)" +let line_parens spc s = "|" ^ spc ^ s ^ spc ^ "|" + +let family_type_suffix = "entry" + +let is_record_typ inst = + match inst.it with + | InstD (_, _, {it = StructT _; _}) -> true + | _ -> false + +let is_variant_typ inst = + match inst.it with + | InstD (_, _, {it = VariantT _; _}) -> true + | _ -> false + +let is_alias_typ inst = + match inst.it with + | InstD (_, _, {it = AliasT _; _}) -> true + | _ -> false + +let is_alias_typ_def def = + match def.it with + | TypD(_ , _, [{it = InstD (_, _, {it = AliasT _; _}); _}]) -> true + | _ -> false + +let check_trivial_append env typ = + match typ.it with + | IterT _ -> true + | VarT (id, _) -> + begin match (Il.Env.find_opt_typ env id) with + | Some (_, [inst]) when is_record_typ inst -> true + | _ -> false + end + | _ -> false + +let is_inductive d = + match d.it with + | RelD _ -> true + | TypD(_, _, [inst]) when is_variant_typ inst || is_alias_typ inst -> true + | _ -> false + +let comment_desc_def d = + match d.it with + | TypD (_, _, [inst]) when is_alias_typ inst -> "Type Alias Definition" + | TypD (_, _, [inst]) when is_variant_typ inst -> "Inductive Type Definition" + | TypD (_, _, [inst]) when is_record_typ inst -> "Record Creation Definition" + | TypD _ -> "Type Family Definition" + | RecD _ -> "Mutual Recursion" + | DecD (_, _, _, []) -> "Axiom Definition" + | DecD _ -> "Auxiliary Definition" + | RelD _ -> "Inductive Relations Definition" + | HintD _ -> "Hint Definition" + | GramD _ -> "Grammar Production Definition" + +let render_unop unop = + match unop with + | `NotOp -> "negb " + | `PlusOp -> "" + | `MinusOp -> "0 - " +let render_binop binop = + match binop with + | `AndOp -> " && " + | `OrOp -> " || " + | `ImplOp -> " -> " + | `EquivOp -> " <-> " + | `AddOp -> " + " + | `SubOp -> " - " + | `MulOp -> " * " + | `DivOp -> " / " + | `ModOp -> " mod " + | `PowOp -> " ^ " + +let render_cmpop cmpop = + match cmpop with + | `EqOp -> " == " + | `NeOp -> " != " + | `LtOp -> " < " + | `GtOp -> " > " + | `LeOp -> " <= " + | `GeOp -> " >= " + +let is_atomid a = + match a.it with + | Xl.Atom.Atom _ -> true + | _ -> false + +let render_id id = + match id with + | s when StringSet.mem s reserved_ids -> "res_" ^ s + | _ -> id + +let render_atom ?(in_mixop = false) a = + match a.it with + | Xl.Atom.Atom a when in_mixop -> a + | Xl.Atom.Atom a -> render_id a + | _ -> "" + +let render_mixop typ_id (m : mixop) = + let s = (match m with + | [{it = Atom a; _}] :: tail when List.for_all ((=) []) tail -> render_id a + | mixop -> String.concat "" (List.map ( + fun atoms -> String.concat "" (List.filter is_atomid atoms |> List.map (render_atom ~in_mixop:true))) mixop + ) + ) in + (* HACK - should be done in improve ids *) + match s with + | "_" -> "mk_" ^ typ_id + | s when Il.Env.mem_typ !env_ref.il_env (s $ no_region) -> "mk_" ^ s + | s -> s + +let get_bind_id b = + match b.it with + | ExpB (id, _) | TypB id | DefB (id, _, _) | GramB (id, _, _) -> render_id id.it + +let get_param_id b = + match b.it with + | ExpP (id, _) | TypP id | DefP (id, _, _) | GramP (id, _) -> render_id id.it + +let render_numtyp nt = + match nt with + | `NatT -> "nat" + | `IntT -> "nat" + | `RatT -> "nat" + | `RealT -> "nat" + +let transform_case_tup e = + match e.it with + | TupE exps -> exps + | _ -> [e] + +let transform_case_typ t = + match t.it with + | TupT typs -> List.map snd typs + | _ -> [t] + +let transform_case_args t = + match t.it with + | TupT typs -> typs + | _ -> [(VarE ("_" $ t.at) $$ t.at % t, t)] + +let get_type_args t = + match t.it with + | VarT (_, args) -> args + | _ -> error t.at ("Following type should be a variable type: " ^ Il.Print.string_of_typ t) + +let rec render_param_type exp_type param = + match param.it with + | ExpP (_, typ) -> render_type exp_type typ + | TypP _ -> "eqType" + | DefP (_, params, typ) -> + string_of_list_suffix " -> " " -> " (render_param_type exp_type) params ^ render_type exp_type typ + | GramP _ -> comment_parens ("Unsupported param: " ^ Il.Print.string_of_param param) + +and render_type exp_type typ = + let rt_func = render_type exp_type in + match typ.it with + | VarT (id, []) -> render_id id.it + | VarT (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) + | BoolT -> "bool" + | NumT nt -> render_numtyp nt + | TextT -> "string" + | TupT [] -> "unit" + | TupT typs -> String.concat " * " (List.map (fun (_, t) -> rt_func t) typs) + | IterT (t, Opt) -> parens ("option " ^ rt_func t) + | IterT (t, _) -> parens ("seq " ^ rt_func t) + +and render_exp exp_type exp = + let r_func = render_exp exp_type in + match exp.it with + | VarE id -> render_id id.it + | BoolE b -> string_of_bool b + | NumE (`Nat n) -> Z.to_string n (* TODO fix nums *) + | NumE (`Int n) -> Z.to_string n (* TODO fix nums *) + | NumE (`Rat n) -> Q.to_string n (* TODO fix nums *) + | NumE (`Real n) -> string_of_float n (* TODO fix nums *) + | TextE s -> "\"" ^ String.escaped s ^ "\"" + | UnE (unop, _, e1) -> parens (render_unop unop ^ r_func e1) + | BinE (binop, _, e1, e2) -> parens (r_func e1 ^ render_binop binop ^ r_func e2) + | CmpE (cmpop, _, e1, e2) -> parens (r_func e1 ^ render_cmpop cmpop ^ r_func e2) + | TupE [] -> "()" + | TupE exps -> parens (String.concat ", " (List.map r_func exps)) + | ProjE (e, i) -> + let typs = transform_case_typ e.note in + let rec make_proj_chain idx len e = + match idx, len with + | 0, 0 -> r_func e + | i, n when i <= n -> parens ("snd " ^ r_func e) + | _ -> parens ("fst " ^ (make_proj_chain idx (len - 1) e)) + in + begin match typs with + | [_] -> r_func e + | _ -> make_proj_chain i (List.length typs - 1) e + end + | CaseE (m, e) when exp_type = LHS -> + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in + let exps = transform_case_tup e in + begin match exps with + | [] -> render_mixop name m + | _ -> parens (render_mixop name m ^ " " ^ String.concat " " (List.map r_func exps)) + end + | CaseE (m, e) -> + let exps = transform_case_tup e in + let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in + (* Reduce here to remove type aliasing *) + let args = get_type_args (Il.Eval.reduce_typ !env_ref.il_env exp.note) in + let implicit_args = if args = [] then "" else " " ^ String.concat " " (List.init (List.length args) (fun _ -> "_")) in + begin match exps with + | [] -> render_mixop name m + | _ -> parens (render_mixop name m ^ implicit_args ^ " " ^ String.concat " " (List.map r_func exps)) + end + | UncaseE _ -> error exp.at "Encountered uncase. Run uncase-removal pass" + | OptE (Some e) -> parens ("Some " ^ r_func e) + | OptE None -> "None" + | TheE e -> parens ("!" ^ parens (r_func e)) + | StrE fields -> "{| " ^ (String.concat "; " (List.map (fun (a, e) -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env exp.note) |> render_id in *) + render_atom a ^ " := " ^ r_func e) fields)) ^ " |}" + | DotE (e, a) -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env e.note) |> render_id in *) + parens (render_atom a ^ " " ^ r_func e) + | CompE (e1, e2) -> parens (r_func e1 ^ " @@ " ^ r_func e2) + | ListE [] -> "[:: ]" + | ListE exps -> ssreflect_square_parens (String.concat "; " (List.map r_func exps)) + | LiftE e -> parens ("option_to_list " ^ r_func e) + | MemE (e1, e2) -> parens (r_func e1 ^ " \\in " ^ r_func e2) + | LenE e1 -> parens (line_parens "" (r_func e1)) + | CatE ({it = ListE [e1]; _}, e2) when exp_type = LHS -> parens (r_func e1 ^ " :: " ^ r_func e2) + | CatE (e1, e2) -> parens (r_func e1 ^ " ++ " ^ r_func e2) + | IdxE (e1, e2) -> parens (r_func e1 ^ square_parens (line_parens " " (r_func e2))) + | SliceE (e1, e2, e3) -> parens ("list_slice" ^ r_func e1 ^ " " ^ r_func e2 ^ " " ^ r_func e3) + | UpdE (e1, p, e2) -> render_path_start p e1 false e2 + | ExtE (e1, p, e2) -> render_path_start p e1 true e2 + | CallE (id, [a]) when StringSet.mem id.it !env_ref.proj_set -> + parens (render_arg exp_type a ^ " :> " ^ (render_type exp_type exp.note)) + | CallE (id, args) -> parens (render_id id.it ^ " " ^ String.concat " " (List.map (render_arg exp_type) args)) + (* Iter handling *) + | IterE (e, (ListN (n, _), [])) -> parens ("List.repeat " ^ (r_func e) ^ " " ^ (r_func n)) + | IterE (e, (_, [])) -> r_func e + | IterE (e, _) when exp_type = LHS -> r_func e + | IterE (e, (iter, iter_binds)) -> + let binds = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type exp_type (remove_iter_from_type e.note))) iter_binds in + let iter_exps = List.map snd iter_binds in + let n = List.length iter_binds - 1 in + let lst = if iter = Opt then iter_exp_opt_funcs else iter_exp_lst_funcs in + let pred_name = match (List.nth_opt lst n) with + | Some s -> s + | None -> error exp.at "Iteration exceeded the supported amount for rocq translation" + in + parens (pred_name ^ " " ^ render_lambda binds (r_func e) ^ " " ^ + String.concat " " (List.map (render_exp exp_type) iter_exps)) + | CvtE (e1, _nt1, nt2) -> parens (r_func e1 ^ " : " ^ render_numtyp nt2) + | SubE _ -> error exp.at "Encountered subtype expression. Please run sub pass" + | IfE (e1, e2, e3) -> parens ("if " ^ r_func e1 ^ " then " ^ r_func e2 ^ " else " ^ r_func e3) + +and render_arg exp_type a = + match a.it with + | ExpA e -> render_exp exp_type e + | TypA t -> render_type exp_type t + | DefA id -> render_id id.it + | _ -> comment_parens ("Unsupported arg: " ^ Il.Print.string_of_arg a) + +and render_bind exp_type b = + match b.it with + | ExpB (id, typ) -> parens (render_id id.it ^ " : " ^ render_type exp_type typ) + | TypB id -> parens (render_id id.it ^ " : Type") + | DefB (id, params, typ) -> + parens (render_id id.it ^ " : " ^ + string_of_list_suffix " -> " " -> " (render_param_type exp_type) params ^ + render_type exp_type typ) + | GramB _ -> comment_parens ("Unsupported bind: " ^ Il.Print.string_of_bind b) + +and render_param exp_type param = + parens (get_param_id param ^ " : " ^ render_param_type exp_type param) + +(* PATH Functions *) +and transform_list_path (p : path) = + match p.it with + | RootP -> [] + | IdxP (p', _) | SliceP (p', _, _) | DotP (p', _) when p'.it = RootP -> [] + | IdxP (p', _) | SliceP (p', _, _) | DotP (p', _) -> p' :: transform_list_path p' + +and render_lambda binds text = + parens ("fun " ^ String.concat " " binds ^ " => " ^ text) + +and render_path_start (p : path) start_exp is_extend end_exp = + let paths = List.rev (p :: transform_list_path p) in + (render_path paths (start_exp.note) p.at 0 (Some start_exp) is_extend end_exp) + +and render_path (paths : path list) typ at n name is_extend end_exp = + let render_record_update t1 t2 t3 = + parens (t1 ^ " <| " ^ t2 ^ " := " ^ t3 ^ " |>") + in + let r_func_e = render_exp RHS in + let is_dot p = (match p.it with + | DotP _ -> true + | _ -> false + ) in + let list_name num = (match name with + | Some exp -> exp + | None -> VarE ((var_prefix ^ string_of_int num) $ no_region) $$ no_region % typ + ) in + let new_name_typ = remove_iter_from_type (list_name n).note in + let new_name = var_prefix ^ string_of_int (n + 1) in + match paths with + (* End logic for extend *) + | [{it = IdxP (_, e); _}] when is_extend -> + let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ render_lambda [bind] extend_term) + | [{it = DotP (_p, a); _}] when is_extend -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in *) + let projection_term = parens (render_atom a ^ " " ^ r_func_e (list_name n)) in + let extend_term = parens (projection_term ^ " ++ " ^ r_func_e end_exp) in + render_record_update (r_func_e (list_name n)) (render_atom a) extend_term + | [{it = SliceP (_, e1, e2); _}] when is_extend -> + let extend_term = parens (new_name ^ " ++ " ^ r_func_e end_exp) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ render_lambda [bind] extend_term) + (* End logic for update *) + | [{it = IdxP (_, e); _}] -> + let bind = render_bind RHS (ExpB ("_" $ no_region, new_name_typ) $ no_region) in + parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] (r_func_e end_exp)) + | [{it = DotP (_p, a); _}] -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in *) + render_record_update (r_func_e (list_name n)) (render_atom a) (r_func_e end_exp) + | [{it = SliceP (_, e1, e2); _}] -> + parens ("list_slice_update " ^ r_func_e (list_name n) ^ " " ^ r_func_e e1 ^ " " ^ r_func_e e2 ^ " " ^ r_func_e end_exp) + (* Middle logic *) + | {it = IdxP (_, e); note; _} :: ps -> + let path_term = render_path ps note at (n + 1) None is_extend end_exp in + let new_name = var_prefix ^ string_of_int (n + 1) in + let bind = render_bind RHS (ExpB (new_name $ no_region, new_name_typ) $ no_region) in + parens ("list_update_func " ^ r_func_e (list_name n) ^ " " ^ r_func_e e ^ " " ^ render_lambda [bind] path_term) + | ({it = DotP _; note; _} as p) :: ps -> + let (dot_paths, ps') = list_split is_dot (p :: ps) in + let (end_name, end_atom, dot_paths') = match List.rev dot_paths with + | {it = DotP (_p, a'); _} :: ds -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p.note) |> render_id in *) + (render_atom a', a', ds) + | _ -> assert false (* Impossible since it has p *) + in + let projection_term = List.fold_right (fun p acc -> + match p.it with + | DotP (_, a') -> + DotE (acc, a') $$ no_region % p.note + | _ -> error at "Should be a record access" (* Should not happen *) + ) dot_paths' (list_name n) in + let update_fields = String.concat ";" (List.map (fun p -> + match p.it with + | DotP (_p', a) -> + (* let name = Il.Print.string_of_typ_name (Il.Eval.reduce_typ !env_ref.il_env p'.note) |> render_id in *) + render_atom a + | _ -> error at "Should be a record access" + ) dot_paths) in + let new_term = parens (end_name ^ " " ^ r_func_e projection_term) in + let new_exp = DotE (projection_term, end_atom) $$ no_region % note in + if ps' = [] + then ( + let final_term = if is_extend then parens (new_term ^ " ++ " ^ r_func_e end_exp) else r_func_e end_exp in + render_record_update (r_func_e (list_name n)) update_fields final_term + ) + else ( + let path_term = render_path ps' note at n (Some new_exp) is_extend end_exp in + render_record_update (r_func_e (list_name n)) update_fields path_term + ) + | ({it = SliceP (_, _e1, _e2); _} as p) :: _ps -> + (* TODO - this is not entirely correct. Still unsure how to implement this as a term *) + (* let new_typ = transform_type' NORMAL note in + let path_term = render_path ps new_typ at (n + 1) None is_extend end_exp $@ transform_type' NORMAL note in + let new_name = var_prefix ^ string_of_int (n + 1) in + let lambda_typ = T_arrowtype [new_name_typ; new_typ] in + T_app (T_exp_basic T_sliceupdate $@ anytype', + [list_name n; transform_exp NORMAL e1; transform_exp NORMAL e2; T_lambda ([(new_name, new_name_typ)], path_term) $@ lambda_typ]) *) + comment_parens (Il.Print.string_of_path p) + (* Catch all error if we encounter empty list or RootP *) + | _ -> error at "Paths should not be empty" + +and render_binders (binds : bind list) = + string_of_list_prefix " " " " (render_bind RHS) binds + +let render_binders_ids (binds : bind list) = + string_of_list_prefix " " " " get_bind_id binds + +let render_match_binders params = + String.concat ", " (List.map get_param_id params) + +let render_params params = + string_of_list_prefix " " " " (render_param RHS) params + +let render_match_args args = + string_of_list_prefix " " ", " (render_arg LHS) args + +let string_of_eqtype_proof recursive (cant_do_equality: bool) id (binds : bind list) = + let binders = render_binders binds in + let binder_ids = render_binders_ids binds in + let id' = render_id id in + (* Decidable equality proof *) + (* e.g. + Definition functype_eq_dec : forall (tf1 tf2 : functype), + {tf1 = tf2} + {tf1 <> tf2}. + Proof. decidable_equality. Defined. + Definition functype_eqb v1 v2 : bool := functype_eq_dec v1 v2. + Definition eqfunctypeP : Equality.axiom functype_eqb := + eq_dec_Equality_axiom functype functype_eq_dec. + + HB.instance Definition _ := hasDecEq.Build (functype) (eqfunctypeP). + *) + (if cant_do_equality then comment_parens "FIXME - No clear way to do decidable equality" ^ "\n" else "") ^ + (match recursive with + | true -> + + "Fixpoint " ^ id' ^ "_eq_dec" ^ binders ^ " (v1 v2 : " ^ id' ^ binder_ids ^ ") {struct v1} :\n" ^ + " {v1 = v2} + {v1 <> v2}.\n" ^ + let proof = if cant_do_equality then "Admitted" else "decide equality; do ? decidable_equality_step. Defined" in + "Proof. " ^ proof ^ ".\n\n" + | false -> + "Definition " ^ id' ^ "_eq_dec : forall" ^ binders ^ " (v1 v2 : " ^ id' ^ binder_ids ^ "),\n" ^ + " {v1 = v2} + {v1 <> v2}.\n" ^ + + let proof = if cant_do_equality then "Admitted" else "do ? decidable_equality_step. Defined" in + "Proof. " ^ proof ^ ".\n\n") ^ + + "Definition " ^ id' ^ "_eqb" ^ binders ^ " (v1 v2 : " ^ id' ^ binder_ids ^ ") : bool :=\n" ^ + "\tis_left" ^ parens (id' ^ "_eq_dec" ^ binder_ids ^ " v1 v2") ^ ".\n" ^ + "Definition eq" ^ id' ^ "P" ^ binders ^ " : Equality.axiom " ^ parens (id' ^ "_eqb" ^ binder_ids) ^ " :=\n" ^ + "\teq_dec_Equality_axiom " ^ parens (id' ^ binder_ids) ^ " " ^ parens (id' ^ "_eq_dec" ^ binder_ids) ^ ".\n\n" ^ + "HB.instance Definition _" ^ binders ^ " := hasDecEq.Build " ^ parens (id' ^ binder_ids) ^ " " ^ parens ("eq" ^ id' ^ "P" ^ binder_ids) ^ ".\n" ^ + "Hint Resolve " ^ id' ^ "_eq_dec : eq_dec_db" + +let string_of_relation_args typ = + string_of_list "" " -> " " -> " (render_type REL) (transform_case_typ typ) + +let rec render_prem prem = + let r_func = render_prem in + match prem.it with + | IfPr exp -> render_exp REL exp + | RulePr (id, _m, exp) -> parens (render_id id.it ^ string_of_list_prefix " " " " (render_exp REL) (transform_case_tup exp)) + | NegPr p -> parens ("~" ^ r_func p) + | ElsePr -> "True " ^ comment_parens ("Unsupported premise: otherwise") (* Will be removed by an else pass *) + | IterPr (p, (_, [])) -> r_func p + | IterPr (p, (iter, ps)) -> + let option_conversion s = if iter = Opt then parens ("option_to_list " ^ s) else s in + let binds = List.map (fun (id, e) -> parens (render_id id.it ^ " : " ^ render_type REL (remove_iter_from_type e.note))) ps in + let iter_exps = List.map snd ps in + let n = List.length ps - 1 in + let pred_name = match (List.nth_opt iter_prem_rels_list n) with + | Some s -> s + | None -> error prem.at "Iteration exceeded the supported amount for rocq translation" + in + pred_name ^ " " ^ render_lambda binds (r_func p) ^ " " ^ + String.concat " " (List.map (render_exp REL) iter_exps |> List.map option_conversion) + | LetPr _ -> + "True " ^ comment_parens ("Unsupported premise: " ^ Il.Print.string_of_prem prem) + +let render_typealias id binds typ = + "Definition " ^ id ^ render_binders binds ^ " : Type := " ^ render_type RHS typ + +let render_record recursive id binds fields = + let constructor_name = "MK" ^ id in + let inhabitance_binders = render_binders binds in + let binders = render_binders_ids binds in + + (* Standard Record definition *) + "Record " ^ id ^ inhabitance_binders ^ " := " ^ constructor_name ^ "\n{\t" ^ + String.concat "\n;\t" (List.map (fun (a, (_, typ, _), _) -> + render_atom a ^ " : " ^ render_type RHS typ) fields) ^ "\n}.\n\n" ^ + + (* Inhabitance proof for default values *) + "Global Instance Inhabited_" ^ id ^ inhabitance_binders ^ " : Inhabited " ^ parens (id ^ binders) ^ " := \n" ^ + "{default_val := {|\n\t" ^ + String.concat ";\n\t" (List.map (fun (a, _, _) -> + render_atom a ^ " := default_val") fields) ^ "|} }.\n\n" ^ + + (* Append instance *) + "Definition _append_" ^ id ^ inhabitance_binders ^ " (arg1 arg2 : " ^ parens (id ^ binders) ^ ") :=\n" ^ + "{|\n\t" ^ String.concat "\t" ((List.map (fun (a, (_, t, _), _) -> + let record_id' = render_atom a in + if (check_trivial_append !env_ref.il_env t) + then record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ ") @@ arg2.(" ^ record_id' ^ ");\n" + else record_id' ^ " := " ^ "arg1.(" ^ record_id' ^ "); " ^ comment_parens "FIXME - Non-trivial append" ^ "\n" + )) fields) ^ "|}.\n\n" ^ + "Global Instance Append_" ^ id ^ " : Append " ^ id ^ " := { _append arg1 arg2 := _append_" ^ id ^ " arg1 arg2 }.\n\n" ^ + + (* Setter proof *) + "#[export] Instance eta__" ^ id ^ " : Settable _ := settable! " ^ constructor_name ^ " <" ^ + String.concat ";" (List.map (fun (a, _, _) -> render_atom a) fields) ^ ">" + ^ ".\n\n" ^ string_of_eqtype_proof recursive false id [] + +let rec has_typ id t = + match t.it with + | VarT (id', _) -> id'.it = id + | IterT (t', _) -> has_typ id t' + | TupT pairs -> List.exists (fun (_, t') -> has_typ id t') pairs + | _ -> false + +let inhabitance_proof id binds cases = + (* Inhabitance proof for default values *) + let inhabitance_binders = render_binders binds in + let binders = render_binders_ids binds in + "Global Instance Inhabited__" ^ id ^ inhabitance_binders ^ " : Inhabited " ^ parens (id ^ binders) ^ + let rec render_proof cs = + (match cs with + | [] -> "(* FIXME: no inhabitant found! *) .\n" ^ + "\tAdmitted" + | (m, (_, t, _), _) :: ts -> + let typs = transform_case_typ t in + if (List.exists (has_typ id) typs) then render_proof ts else + " := { default_val := " ^ render_mixop id m ^ binders ^ + string_of_list_prefix " " " " (fun _ -> "default_val" ) (transform_case_typ t) ^ " }") + in + render_proof cases + +let render_coercion (base_typ_id, typ_params) coerc_typ_id proj_func_id = + "Global Instance " ^ proj_func_id ^ "_coercion" ^ render_params typ_params ^ " : Coercion " ^ base_typ_id ^ " " ^ coerc_typ_id ^ " := { coerce := " ^ proj_func_id ^ + string_of_list_prefix " " " " get_param_id typ_params ^ " }" + +let cant_do_equality binds cases = + (List.exists is_typ_bind binds) || + (List.exists (fun (_, (binds', _, _), _) -> List.exists is_typ_bind binds') cases) + +let render_case_typs t = + let typs = transform_case_args t in + string_of_list_prefix " " " " (fun (e, t) -> + parens (render_exp RHS e ^ " : " ^ render_type RHS t)) typs + +let render_variant_typ is_recursive prefix id binds cases = + prefix ^ id ^ render_binders binds ^ " : Type :=\n\t" ^ + String.concat "\n\t" (List.map (fun (m, (_, t, _), _) -> + "| " ^ render_mixop id m ^ render_case_typs t ^ " : " ^ id ^ render_binders_ids binds + ) cases) ^ + if is_recursive then "" else + (* Inhabitance proof *) + ".\n\n" ^ inhabitance_proof id binds cases ^ + (* Eq proof *) + ".\n\n" ^ string_of_eqtype_proof is_recursive (cant_do_equality binds cases) id binds + +let render_extra_clause params = + "|" ^ string_of_list_prefix " " ", " (fun _ -> "_") params ^ " => default_val" + +let render_inh_param inhib_type_vars param = + match param.it with + | TypP id when List.mem id.it inhib_type_vars -> Some ("{_ : Inhabited " ^ render_id id.it ^ "}") + | _ -> None + +let render_single_type id at params = + let is_typ_param p = + match p.it with + | TypP _ -> true + | _ -> false + in + match List.rev params with + | {it = ExpP (_, typ); _} :: ps when List.for_all is_typ_param ps -> (render_type RHS typ, ps) + | _ -> error at ("Given projection function: " ^ id ^ " has invalid parameters!") + +let render_function_def prefix id at params r_typ clauses = + let has_typ_fam = List.length params > 1 && List.exists is_type_family_param params in + let is_proj_func = StringSet.mem id !env_ref.proj_set in + let base_list_collector = base_collector [] (@) in + let c = { base_list_collector with collect_exp = needs_inh_class; collect_path = needs_inh_class_path } in + let inhabited_typ_vars = List.concat_map (fun clause -> + let DefD (_, _, exp, prems) = clause.it in + collect_exp c exp @ List.concat_map (collect_prem c) prems + ) clauses in + let extra_params = List.filter_map (render_inh_param inhabited_typ_vars) params in + let e_params_render = if extra_params = [] then "" else " " ^ String.concat " " extra_params in + prefix ^ id ^ render_params params ^ e_params_render ^ " : " ^ render_type RHS r_typ ^ " :=\n" ^ + "\tmatch " ^ render_match_binders params ^ " return " ^ render_type RHS r_typ ^ " with\n\t\t" ^ + String.concat "\n\t\t" (List.map (fun clause -> match clause.it with + | DefD (_, args, exp, _) -> + "|" ^ render_match_args args ^ " => " ^ render_exp RHS exp) clauses + ) ^ + (if has_typ_fam then "\n\t\t" ^ render_extra_clause params else "") ^ + "\n\tend" ^ + if is_proj_func + then + ".\n\n" ^ + render_coercion (render_single_type id at params) (render_type RHS r_typ) id + else "" + +let render_relation prefix id typ rules = + prefix ^ id ^ " : " ^ string_of_relation_args typ ^ "Prop :=\n\t" ^ + String.concat "\n\t" (List.map (fun rule -> match rule.it with + | RuleD (rule_id, binds, _, exp, prems) -> + let string_prems = string_of_list "\n\t\t" " ->\n\t\t" " ->\n\t\t" (render_prem) prems in + let forall_quantifiers = string_of_list "forall " ", " " " (render_bind REL) binds in + "| " ^ render_id (rule_id.it) ^ " : " ^ forall_quantifiers ^ string_prems ^ render_id id ^ " " ^ String.concat " " (List.map (render_exp REL) (transform_case_tup exp)) + ) rules) + +let render_axiom prefix id params r_typ = + prefix ^ id ^ " : " ^ string_of_list "forall " ", " " " (render_param RHS) params ^ render_type RHS r_typ + +let render_rel_axiom prefix id typ = + prefix ^ id ^ " : " ^ string_of_relation_args typ ^ "Prop" + +let render_global_declaration id typ exp = + "Definition " ^ id ^ " : " ^ render_type RHS typ ^ " := " ^ render_exp RHS exp + +let render_extra_info def = + match def.it with + | TypD (id, _, [{it = InstD (binds, _, {it = VariantT typcases; _}); _}]) -> + Some (inhabitance_proof id.it binds typcases ^ ".\n\n" ^ + string_of_eqtype_proof true (cant_do_equality binds typcases) id.it binds) + | _ -> None + +let has_prems c = + match c.it with + | DefD (_, _, _, prems) -> prems <> [] + +let start_prefix def = + match def.it with + | _ when is_inductive def -> "Inductive " + | DecD (_, _, _, []) -> "Axiom " + | DecD (_, _, _, clauses) when List.exists has_prems clauses -> "Axiom " + | DecD _ -> "Fixpoint " + | TypD (_, _, [inst]) when is_record_typ inst -> "Record " + | _ -> "" + +let is_axiom def = + match def.it with + | DecD (_, _, _, _clauses) -> true + | _ -> false + +(* TODO - revise mutual recursion with other defs such as records and axioms *) +let rec string_of_def has_endline recursive def = + let end_newline = if has_endline then ".\n\n" else "" in + let start = if recursive then "" else comment_parens (comment_desc_def def ^ " at: " ^ Util.Source.string_of_region def.at) ^ "\n" in + match def.it with + | TypD (id, _, [{it = InstD (binds, _, {it = AliasT typ; _}); _}]) -> + if recursive then "" else + start ^ render_typealias (render_id id.it) binds typ ^ end_newline + | TypD (id, _, [{it = InstD (binds, _, {it = StructT typfields; _}); _}])-> + start ^ render_record recursive (render_id id.it) binds typfields ^ end_newline + | TypD (id, _, [{it = InstD (binds, _, {it = VariantT typcases; _}); _}]) -> + let prefix = if recursive then "" else "Inductive " in + start ^ render_variant_typ recursive prefix (render_id id.it) binds typcases ^ end_newline + | DecD (id, [], typ, [{it = DefD ([], [], exp, _); _}]) -> + start ^ render_global_declaration (render_id id.it) typ exp ^ end_newline + | DecD (id, params, typ, []) -> + let prefix = if recursive then "" else "Axiom " in + start ^ render_axiom prefix (render_id id.it) params typ ^ end_newline + | DecD (id, params, typ, clauses) when List.exists has_prems clauses -> + let prefix = if recursive then "" else "Axiom " in + start ^ render_axiom prefix (render_id id.it) params typ ^ end_newline + | DecD (id, params, typ, clauses) -> + let prefix = if recursive then "" else "Definition " in + start ^ render_function_def prefix (render_id id.it) id.at params typ (clauses) ^ end_newline + | RelD (id, _, typ, []) -> + let prefix = if recursive then "" else "Axiom " in + start ^ render_rel_axiom prefix (render_id id.it) typ ^ end_newline + | RelD (id, _, typ, rules) -> + let prefix = if recursive then "" else "Inductive " in + start ^ render_relation prefix (render_id id.it) typ rules ^ end_newline + (* Mutual recursion - special handling for rocq *) + | RecD defs -> start ^ (match defs with + | [] -> "" + | [d] -> + let extra_info = render_extra_info d in + start_prefix d ^ + string_of_def false true d ^ + begin match extra_info with + | None -> end_newline + | Some s -> end_newline ^ s ^ end_newline + end + | (d :: _) -> + let prefix = "\n\nwith\n\n" in + let extra_info = String.concat ".\n\n" (List.filter_map render_extra_info defs) in + start_prefix d ^ + String.concat prefix ( + List.map (string_of_def false true) defs + ) ^ ".\n\n" ^ + extra_info ^ if extra_info = "" then "" else end_newline + ) + | _ -> error def.at ("Unsupported def: " ^ Il.Print.string_of_def def) + +let exported_string = + "(* Imported Code *)\n" ^ + "From Stdlib Require Import String List Unicode.Utf8 Reals.\n" ^ + "From mathcomp Require Import ssreflect ssrfun ssrnat ssrbool seq eqtype rat ssrint.\n" ^ + "From HB Require Import structures.\n" ^ + "From RecordUpdate Require Import RecordSet.\n" ^ + "Declare Scope wasm_scope.\n\n" ^ + "Class Inhabited (T: Type) := { default_val : T }.\n\n" ^ + "Definition lookup_total {T: Type} {_: Inhabited T} (l: seq T) (n: nat) : T :=\n" ^ + "\tseq.nth default_val l n.\n\n" ^ + "Definition the {T : Type} {_ : Inhabited T} (arg : option T) : T :=\n" ^ + "\tmatch arg with\n" ^ + "\t\t| None => default_val\n" ^ + "\t\t| Some v => v\n" ^ + "\tend.\n\n" ^ + "Definition list_zipWith {X Y Z : Type} (f : X -> Y -> Z) (xs : seq X) (ys : seq Y) : seq Z :=\n" ^ + "\tseq.map (fun '(x, y) => f x y) (seq.zip xs ys).\n\n" ^ + "Definition option_zipWith {α β γ: Type} (f: α -> β -> γ) (x: option α) (y: option β): option γ := \n" ^ + "\tmatch x, y with\n" ^ + "\t\t| Some x, Some y => Some (f x y)\n" ^ + "\t\t| _, _ => None\n" ^ + "\tend.\n\n" ^ + "Fixpoint list_update {α: Type} (l: seq α) (n: nat) (y: α): seq α :=\n" ^ + "\tmatch l, n with\n" ^ + "\t\t| nil, _ => nil\n" ^ + "\t\t| x :: l', O => y :: l'\n" ^ + "\t\t| x :: l', S n => x :: list_update l' n y\n" ^ + "\tend.\n\n" ^ + "Definition option_append {α: Type} (x y: option α) : option α :=\n" ^ + "\tmatch x with\n" ^ + "\t\t| Some _ => x\n" ^ + "\t\t| None => y\n" ^ + "\tend.\n\n" ^ + "Definition option_map {α β : Type} (f : α -> β) (x : option α) : option β :=\n" ^ + "\tmatch x with\n" ^ + "\t\t| Some x => Some (f x)\n" ^ + "\t\t| _ => None\n" ^ + "\tend.\n\n" ^ + "Fixpoint list_update_func {α: Type} (l: seq α) (n: nat) (y: α -> α): seq α :=\n" ^ + "\tmatch l, n with\n" ^ + "\t\t| nil, _ => nil\n" ^ + "\t\t| x :: l', O => (y x) :: l'\n" ^ + "\t\t| x :: l', S n => x :: list_update_func l' n y\n" ^ + "\tend.\n\n" ^ + "Fixpoint list_slice {α: Type} (l: seq α) (i: nat) (j: nat): seq α :=\n" ^ + "\tmatch l, i, j with\n" ^ + "\t\t| nil, _, _ => nil\n" ^ + "\t\t| x :: l', O, O => nil\n" ^ + "\t\t| x :: l', S n, O => nil\n" ^ + "\t\t| x :: l', O, S m => x :: list_slice l' 0 m\n" ^ + "\t\t| x :: l', S n, m => list_slice l' n m\n" ^ + "\tend.\n\n" ^ + "Fixpoint list_slice_update {α: Type} (l: seq α) (i: nat) (j: nat) (update_l: seq α): seq α :=\n" ^ + "\tmatch l, i, j, update_l with\n" ^ + "\t\t| nil, _, _, _ => nil\n" ^ + "\t\t| l', _, _, nil => l'\n" ^ + "\t\t| x :: l', O, O, _ => nil\n" ^ + "\t\t| x :: l', S n, O, _ => nil\n" ^ + "\t\t| x :: l', O, S m, y :: u_l' => y :: list_slice_update l' 0 m u_l'\n" ^ + "\t\t| x :: l', S n, m, _ => x :: list_slice_update l' n m update_l\n" ^ + "\tend.\n\n" ^ + "Definition list_extend {α: Type} (l: seq α) (y: α): seq α :=\n" ^ + "\ty :: l.\n\n" ^ + "Definition option_map3 {A B C D: Type} (f: A -> B -> C -> D) (x: option A) (y: option B) (z: option C): option D :=\n" ^ + "\tmatch x, y, z with\n" ^ + "\t\t| Some x, Some y, Some z => Some (f x y z)\n" ^ + "\t\t| _, _, _ => None\n" ^ + "\tend.\n\n" ^ + "Definition list_map3 {A B C D: Type} (f : A -> B -> C -> D) (xs : seq A) (ys : seq B) (zs : seq C) : seq D :=\n" ^ + "\tseq.map (fun '(x, (y, z)) => f x y z) (seq.zip xs (seq.zip ys zs)).\n\n" ^ + "Inductive List_Forall3 {A B C: Type} (R : A -> B -> C -> Prop): seq A -> seq B -> seq C -> Prop :=\n" ^ + "\t| Forall3_nil : List_Forall3 R nil nil nil\n" ^ + "\t| Forall3_cons : forall x y z l l' l'',\n"^ + "\t\tR x y z -> List_Forall3 R l l' l'' -> List_Forall3 R (x :: l) (y :: l') (z :: l'').\n\n" ^ + "Class Append (α: Type) := _append : α -> α -> α.\n\n" ^ + "Infix \"@@\" := _append (right associativity, at level 60) : wasm_scope.\n\n" ^ + "Global Instance Append_List_ {α: Type}: Append (seq α) := { _append l1 l2 := seq.cat l1 l2 }.\n\n" ^ + "Global Instance Append_Option {α: Type}: Append (option α) := { _append o1 o2 := option_append o1 o2 }.\n\n" ^ + "Global Instance Append_nat : Append (nat) := { _append n1 n2 := n1 + n2}.\n\n" ^ + "Global Instance Inh_unit : Inhabited unit := { default_val := tt }.\n\n" ^ + "Global Instance Inh_nat : Inhabited nat := { default_val := O }.\n\n" ^ + "Global Instance Inh_list {T: Type} : Inhabited (seq T) := { default_val := nil }.\n\n" ^ + "Global Instance Inh_option {T: Type} : Inhabited (option T) := { default_val := None }.\n\n" ^ + "Global Instance Inh_Z : Inhabited Z := { default_val := Z0 }.\n\n" ^ + "Global Instance Inh_prod {T1 T2: Type} {_: Inhabited T1} {_: Inhabited T2} : Inhabited (prod T1 T2) := { default_val := (default_val, default_val) }.\n\n" ^ + "Global Instance Inh_type : Inhabited Type := { default_val := nat }.\n\n" ^ + "Definition option_to_list {T: Type} (arg : option T) : seq T :=\n" ^ + "\tmatch arg with\n" ^ + "\t\t| None => nil\n" ^ + "\t\t| Some a => a :: nil\n" ^ + "\tend.\n\n" ^ + "Coercion option_to_list: option >-> seq.\n\n" ^ + "Coercion Z.to_nat: Z >-> nat.\n\n" ^ + "Coercion Z.of_nat: nat >-> Z.\n\n" ^ + "Coercion ratz: int >-> rat.\n\n" ^ + "Create HintDb eq_dec_db.\n\n" ^ + "Ltac decidable_equality_step :=\n" ^ + " do [ by eauto with eq_dec_db | decide equality ].\n\n" ^ + "Lemma eq_dec_Equality_axiom :\n" ^ + " forall (T : Type) (eq_dec : forall (x y : T), decidable (x = y)),\n" ^ + " let eqb v1 v2 := is_left (eq_dec v1 v2) in Equality.axiom eqb.\n" ^ + "Proof.\n" ^ + " move=> T eq_dec eqb x y. rewrite /eqb.\n" ^ + " case: (eq_dec x y); by [apply: ReflectT | apply: ReflectF].\n" ^ + "Qed.\n\n" ^ + "Class Coercion (A B : Type) := { coerce : A -> B }.\n\n" ^ + "Notation \"x ':>' B\" := (coerce (A:=_) (B:=B) x)\n" ^ + "(at level 70, right associativity).\n\n" ^ + "Definition option_coerce {A B : Type} `{Coercion A B} (a_opt : option A): option B :=\n" ^ + "\tmatch a_opt with\n" ^ + "\t\t| Some a => Some (coerce a)\n" ^ + "\t\t| None => None\n" ^ + "\tend.\n\n" ^ + "Definition list_coerce {A B : Type} `{Coercion A B} (a_list : seq A): seq B :=\n" ^ + "\t[seq (coerce a) | a <- a_list].\n\n" ^ + "Definition id_coerce {A : Type} (a : A) : A := a.\n\n" ^ + "Definition transitive_coerce {A B C : Type} `{Coercion A B} `{Coercion B C} (a : A): C :=\n" ^ + "\tcoerce (coerce a).\n\n" ^ + "Definition total_coerce {A B: Type} `{Coercion A (option B)} {_ : Inhabited B} (a : A): B :=\n" ^ + "\tthe (coerce a).\n\n" ^ + "Global Instance option_coercion (A B : Type) {_: Coercion A B}: Coercion (option A) (option B) := { coerce := option_coerce }.\n\n" ^ + "Global Instance list_coercion (A B : Type) {_: Coercion A B}: Coercion (seq A) (seq B) := { coerce := list_coerce }.\n\n" ^ + "Global Instance id_coercion (A : Type): Coercion A A := { coerce := id_coerce }.\n\n" ^ + "Global Instance transitive_coercion (A B C : Type) `{Coercion A B} `{Coercion B C}: Coercion A C := { coerce := transitive_coerce }.\n\n" ^ + "Global Instance total_coercion (A B : Type) `{Coercion A (option B)} {_ : Inhabited B}: Coercion A B := { coerce := total_coerce}.\n\n" ^ + "Notation \"| x |\" := (seq.size x) (at level 60).\n" ^ + "Notation \"!( x )\" := (the x) (at level 60).\n" ^ + "Notation \"x '[|' a '|]'\" := (lookup_total x a) (at level 10).\n" ^ + "Open Scope wasm_scope.\n" ^ + "Import ListNotations.\n" ^ + "Import RecordSetNotations.\n\n" + +let rec filter_def def = + match def.it with + | GramD _ | HintD _ -> None + | RecD defs -> Some {def with it = RecD (List.filter_map filter_def defs) } + | _ -> Some def + +let is_tf_hint h = h.hintid.it = Middlend.Typefamilyremoval.type_family_hint_id + +let is_proj_hint h = h.hintid.it = Middlend.Uncaseremoval.uncase_proj_hint_id + +let rec register_hints env def = + match def.it with + | HintD { it = TypH (id, hints); _} when List.exists is_tf_hint hints -> + env.tf_set <- StringSet.add id.it env.tf_set + | HintD { it = DecH (id, hints); _} when List.exists is_proj_hint hints -> + env.proj_set <- StringSet.add id.it env.proj_set + | RecD defs -> List.iter (register_hints env) defs + | _ -> () + +let string_of_script (il : script) = + !env_ref.il_env <- Il.Env.env_of_script il; + List.iter (register_hints !env_ref) il; + let il' = Disamb.transform il in + exported_string ^ + "(* Generated Code *)\n" ^ + String.concat "" (List.filter_map filter_def il' |> List.map (string_of_def true false)) \ No newline at end of file diff --git a/spectec/src/dune b/spectec/src/dune index aea839fdf3..578a66555a 100644 --- a/spectec/src/dune +++ b/spectec/src/dune @@ -8,10 +8,12 @@ (re_export frontend) (re_export middlend) (re_export backend_ast) + (re_export backend_lean4) (re_export backend_latex) (re_export backend_prose) (re_export backend_splice) (re_export backend_interpreter) + (re_export backend_rocq) (re_export il2al) ) ) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 9088adf0f2..2626438a66 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -13,6 +13,8 @@ type target = | Prose of bool | Splice of Backend_splice.Config.t | Interpreter of string list + | Rocq + | Lean4 type pass = | Sub @@ -22,11 +24,14 @@ type pass = | TypeFamilyRemoval | Else | Undep + | DefToRel | SubExpansion | Uncaseremoval | AliasDemut | ImproveIds | Ite + | ElseSimp + | LetIntro (* This list declares the intended order of passes. @@ -37,14 +42,17 @@ flags on the command line. let _skip_passes = [ Unthe ] (* Not clear how to extend them to indexed types *) let all_passes = [ Ite; + LetIntro; TypeFamilyRemoval; Undep; Totalize; Else; + ElseSimp; Uncaseremoval; - Sideconditions; SubExpansion; Sub; + DefToRel; + Sideconditions; AliasDemut; ImproveIds ] @@ -108,10 +116,13 @@ let pass_flag = function | AliasDemut -> "alias-demut" | Else -> "else" | Undep -> "remove-indexed-types" + | DefToRel -> "definition-to-relation" | SubExpansion -> "sub-expansion" | Uncaseremoval -> "uncase-removal" | ImproveIds -> "improve-ids" | Ite -> "ite" + | ElseSimp -> "else-simplification" + | LetIntro -> "let-intro" let pass_desc = function | Sub -> "Synthesize explicit subtype coercions" @@ -121,11 +132,14 @@ let pass_desc = function | TypeFamilyRemoval -> "Transform Type families into sum types" | Else -> "Eliminate the otherwise premise in relations" | Undep -> "Transform indexed types into types with well-formedness predicates" + | DefToRel -> "Transform specific function definitions into relations" | SubExpansion -> "Expands subtype matching" | Uncaseremoval -> "Eliminate the uncase expression" | AliasDemut -> "Lifts type aliases out of mutual groups" | ImproveIds -> "Disambiguates ids used from each other" | Ite -> "If-then-else introduction" + | ElseSimp -> "Simplifies generated otherwise relations (after else pass)" + | LetIntro -> "Let Premise introduction" let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function @@ -136,11 +150,14 @@ let run_pass : pass -> Il.Ast.script -> Il.Ast.script = function | TypeFamilyRemoval -> Middlend.Typefamilyremoval.transform | Else -> Middlend.Else.transform | Undep -> Middlend.Undep.transform + | DefToRel -> Middlend.Deftorel.transform | SubExpansion -> Middlend.Subexpansion.transform | Uncaseremoval -> Middlend.Uncaseremoval.transform | AliasDemut -> Middlend.AliasDemut.transform | ImproveIds -> Middlend.Improveids.transform | Ite -> Middlend.Ite.transform + | ElseSimp -> Middlend.Elsesimp.transform + | LetIntro -> Middlend.Letintro.transform (* Argument parsing *) @@ -195,6 +212,8 @@ let argspec = Arg.align ( "--prose-rst", Arg.Unit (fun () -> target := Prose false), " Generate prose"; "--interpreter", Arg.Rest_all (fun args -> target := Interpreter args), " Generate interpreter"; + "--rocq", Arg.Unit (fun () -> target := Rocq), " Generate Rocq Inductive Definitions"; + "--lean4", Arg.Unit (fun () -> target := Lean4), " Generate Lean4 specification"; "--debug", Arg.Unit (fun () -> Backend_interpreter.Debugger.debug := true), " Debug interpreter"; "--unified-vars", Arg.Unit (fun () -> Il2al.Unify.rename := false), @@ -244,6 +263,20 @@ let () = (match !target with | Prose _ | Splice _ | Interpreter _ -> enable_pass Sideconditions; + | Rocq | Lean4 -> + enable_pass Sideconditions; + enable_pass Totalize; + enable_pass Else; + enable_pass TypeFamilyRemoval; + enable_pass Undep; + enable_pass Uncaseremoval; + enable_pass Sub; + enable_pass SubExpansion; + enable_pass ImproveIds; + enable_pass AliasDemut; + enable_pass DefToRel; + enable_pass Ite; + enable_pass ElseSimp | _ when !print_al || !print_al_o <> "" -> enable_pass Sideconditions; | _ -> () @@ -270,7 +303,7 @@ let () = if !print_final_il && not !print_all_il then print_il il; let al = - if not !print_al && !print_al_o = "" && (!target = Check || !target = Ast || !target = Latex) then [] + if not !print_al && !print_al_o = "" && (!target = Check || !target = Ast || !target = Latex || !target = Rocq || !target = Lean4) then [] else ( log "Translating to AL..."; let interp = match !target with @@ -380,6 +413,32 @@ let () = Backend_interpreter.Ds.init al; log "Interpreting..."; Backend_interpreter.Runner.run args + | Rocq -> + log "Rocq Generation..."; + (match !odsts with + | [] -> print_endline (Backend_rocq.Print.string_of_script il) + | [odst] -> + let coq_code = Backend_rocq.Print.string_of_script il in + let oc = Out_channel.open_text odst in + Fun.protect (fun () -> Out_channel.output_string oc coq_code) + ~finally:(fun () -> Out_channel.close oc) + | _ -> + prerr_endline "too many output file names"; + exit 2 + ) + | Lean4 -> + log "Lean Generation..."; + (match !odsts with + | [] -> print_endline (Backend_lean4.Print.string_of_script il) + | [odst] -> + let code = Backend_lean4.Print.string_of_script il in + let oc = Out_channel.open_text odst in + Fun.protect (fun () -> Out_channel.output_string oc code) + ~finally:(fun () -> Out_channel.close oc) + | _ -> + prerr_endline "too many output file names"; + exit 2 + ) ); log "Complete." with diff --git a/spectec/src/il/debug.ml b/spectec/src/il/debug.ml index e3dd99fe81..0a992de473 100644 --- a/spectec/src/il/debug.ml +++ b/spectec/src/il/debug.ml @@ -19,6 +19,7 @@ let il_param = string_of_param let il_args = list il_arg let il_binds = string_of_binds let il_params = list il_param +let il_clause = string_of_clause let il_def = string_of_def let il_free s = String.concat " " Free.[ diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index 7ef8a0b9f4..476ce8fc1b 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -33,6 +33,14 @@ let diff sets1 sets2 = gramid = Set.diff sets1.gramid sets2.gramid; } +let inter sets1 sets2 = + { typid = Set.inter sets1.typid sets2.typid; + relid = Set.inter sets1.relid sets2.relid; + varid = Set.inter sets1.varid sets2.varid; + defid = Set.inter sets1.defid sets2.defid; + gramid = Set.inter sets1.gramid sets2.gramid; + } + let (+) = union let (-) = diff diff --git a/spectec/src/il/free.mli b/spectec/src/il/free.mli index ba5d3aaacb..03f2bf3be5 100644 --- a/spectec/src/il/free.mli +++ b/spectec/src/il/free.mli @@ -7,6 +7,7 @@ type sets = {typid : Set.t; relid : Set.t; varid : Set.t; defid : Set.t; gramid val empty : sets val union : sets -> sets -> sets val diff : sets -> sets -> sets +val inter : sets -> sets -> sets val subset : sets -> sets -> bool val disjoint : sets -> sets -> bool diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index 4067e4a7b8..d44d3f3095 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -17,6 +17,7 @@ sig val visit_typ : typ -> unit val visit_deftyp : deftyp -> unit val visit_exp : exp -> unit + val visit_arg : arg -> unit val visit_path : path -> unit val visit_sym : sym -> unit val visit_prem : prem -> unit @@ -39,6 +40,7 @@ struct let visit_typ _ = () let visit_deftyp _ = () let visit_exp _ = () + let visit_arg _ = () let visit_path _ = () let visit_sym _ = () let visit_prem _ = () @@ -187,6 +189,7 @@ and prems prs = list prem prs (* Definitions *) and arg a = + visit_arg a; match a.it with | ExpA e -> exp e | TypA t -> typ t diff --git a/spectec/src/il/walk.ml b/spectec/src/il/walk.ml index 8f580e709c..8d9bbeede6 100644 --- a/spectec/src/il/walk.ml +++ b/spectec/src/il/walk.ml @@ -154,7 +154,7 @@ and transform_bind t b = let f = t.transform_bind in let it = match b.it with | ExpB (id, typ) -> ExpB (t.transform_var_id id, transform_typ t typ) - | TypB id -> TypB (t.transform_typ_id id) + | TypB id -> TypB (t.transform_var_id id) | DefB (id, params, typ) -> DefB (t.transform_def_id id, List.map (transform_param t) params, transform_typ t typ) | GramB (id, params, typ) -> GramB (t.transform_gram_id id, List.map (transform_param t) params, transform_typ t typ) in @@ -163,7 +163,7 @@ and transform_bind t b = and transform_param t p = { p with it = match p.it with | ExpP (id, typ) -> ExpP (t.transform_var_id id, transform_typ t typ) - | TypP id -> TypP (t.transform_typ_id id) + | TypP id -> TypP (t.transform_var_id id) | DefP (id, params, typ) -> DefP (t.transform_def_id id, List.map (transform_param t) params, transform_typ t typ) | GramP (id, typ) -> GramP (t.transform_gram_id id, transform_typ t typ) } @@ -226,6 +226,7 @@ type 'a collector = { default: 'a; compose: 'a -> 'a -> 'a; collect_exp: exp -> 'a * bool; + collect_path: path -> 'a * bool; collect_bind: bind -> 'a * bool; collect_prem: prem -> 'a * bool; collect_iterexp: iterexp -> 'a * bool; @@ -239,6 +240,7 @@ let base_collector default compose = { default = default; compose = compose; collect_exp = no_collect default; + collect_path = no_collect default; collect_bind = no_collect default; collect_prem = no_collect default; collect_iterexp = no_collect default; @@ -303,11 +305,16 @@ and collect_iterexp c iterexp = and collect_path c p = let ( $@ ) = c.compose in - match p.it with - | RootP -> c.default - | DotP (p', _) -> collect_path c p' - | IdxP (p', e) -> collect_path c p' $@ collect_exp c e - | SliceP (p', e1, e2) -> collect_path c p' $@ collect_exp c e1 $@ collect_exp c e2 + let f = c.collect_path in + let traverse_list = + match p.it with + | RootP -> c.default + | DotP (p', _) -> collect_path c p' + | IdxP (p', e) -> collect_path c p' $@ collect_exp c e + | SliceP (p', e1, e2) -> collect_path c p' $@ collect_exp c e1 $@ collect_exp c e2 + in + let (res, continue) = f p in + res $@ if continue then traverse_list else c.default and collect_arg c a = let f = c.collect_arg in diff --git a/spectec/src/middlend/deftorel.ml b/spectec/src/middlend/deftorel.ml new file mode 100644 index 0000000000..65b0caba01 --- /dev/null +++ b/spectec/src/middlend/deftorel.ml @@ -0,0 +1,648 @@ +open Il.Ast +open Il +open Il.Walk +open Util.Source +open Util + +module StringSet = Set.Make(String) + +module ExpMap = Map.Make(struct + type t = exp + let compare exp1 exp2 = if Eq.eq_exp exp1 exp2 then 0 + (* HACK - Need better way to compare exps, only hurts performance *) + else String.compare (Print.string_of_exp exp1) (Print.string_of_exp exp2) +end) + +type env = { + mutable il_env : Il.Env.t; + mutable rel_set : StringSet.t; + mutable def_arg_set : StringSet.t +} + +let empty_env = { + il_env = Il.Env.empty; + rel_set = StringSet.empty; + def_arg_set = StringSet.empty +} + +let fun_prefix = "fun_" + +let apply_iter_to_var id iter = + match iter with + | Opt -> id ^ Il.Print.string_of_iter Opt + | _ -> id ^ Il.Print.string_of_iter List + +let get_bind_id b = + match b.it with + | ExpB (id, _) -> id.it + | TypB id -> id.it + | DefB (id, _, _) -> id.it + | GramB (id, _, _) -> id.it + +let get_exp_arg a = + match a.it with + | ExpA exp -> exp + | _ -> assert false + +let transform_typ_iter i = + match i with + | ListN _ -> + (* Definite iterators not allowed in types *) + List + | _ -> i + +let filter_iter_binds args iter_binds = + let free_vars = (Free.free_list Free.free_arg args).varid in + (List.fold_left (fun (free_set, acc) (iter, id_exp_pairs) -> + let new_id_exp_pairs = List.filter (fun (id, _) -> + Free.Set.mem id.it free_set + ) id_exp_pairs in + if new_id_exp_pairs = [] then (free_set, acc) else + let iter_vars = List.fold_left (fun acc (_, e) -> + Free.Set.union acc (Free.free_exp e).varid + ) Free.Set.empty new_id_exp_pairs in + let new_set = Free.Set.union iter_vars free_set in + (new_set, (iter, new_id_exp_pairs) :: acc) + ) (free_vars, []) iter_binds) + |> snd |> List.rev + +let rec create_collector iterexps env = + let base_collector_iters = base_collector [] (@) in + { base_collector_iters with collect_exp = collect_fcalls_exp iterexps env; collect_prem = collect_fcalls_prem iterexps env } + +and collect_fcalls_exp iterexps env e = + match e.it with + | CallE (id, args) when StringSet.mem id.it env.rel_set -> + let new_iter_binds = filter_iter_binds args iterexps in + ([((fun_prefix ^ id.it $ id.at, args, e.note), new_iter_binds, List.length new_iter_binds)], true) + | IterE (e1, iterexp) -> + let c1 = create_collector iterexps env in + let c2 = create_collector (iterexp :: iterexps) env in + (collect_exp c2 e1 @ collect_iterexp c1 iterexp, false) + | _ -> ([], true) + +and collect_fcalls_prem iterexps env p = + match p.it with + | IterPr (p', iterexp) -> + let c1 = create_collector iterexps env in + let c2 = create_collector (iterexp :: iterexps) env in + (collect_prem c2 p' @ collect_iterexp c1 iterexp, false) + | _ -> ([], true) + +let create_fun_prem ids ((id, args, r_typ), iterexps, _) = + let fresh_var = Utils.generate_var ids "" in + let var_exp = VarE (fresh_var $ id.at) $$ id.at % r_typ in + let new_mixop = [] :: List.init (List.length args + 1) (fun _ -> []) in + let exps = List.map get_exp_arg args in + let r_typ_tup = (VarE ("_" $ id.at) $$ id.at % r_typ, r_typ) in + let tupt = TupT (List.map (fun e -> VarE ("_" $ id.at) $$ id.at % e.note, e.note) exps @ [r_typ_tup]) $ id.at in + let tupe = TupE (exps @ [var_exp]) $$ id.at % tupt in + let rule_prem = RulePr (id, new_mixop, tupe) $ id.at in + let new_var, typ, prem = List.fold_left (fun (var, typ, prem) (iter, id_exp_pairs) -> + let new_typ = IterT (typ, transform_typ_iter iter) $ id.at in + let new_var = apply_iter_to_var var iter in + let var_exp = VarE (new_var $ id.at) $$ id.at % new_typ in + let new_id_exp_pairs = (var $ id.at, var_exp) :: id_exp_pairs in + (new_var, new_typ, IterPr (prem, (iter, new_id_exp_pairs)) $ id.at) + ) (fresh_var, r_typ, rule_prem) iterexps in + fresh_var, ExpB (new_var $ id.at, typ) $ id.at, prem + +let create_call_map fcalls binds = + let fcalls' = Util.Lib.List.nub (fun ((id, args, _), iterexps, _) ((id', args', _), iterexps', _) -> + Eq.eq_id id id' && + Eq.eq_list Eq.eq_arg args args' && + Eq.eq_list Eq.eq_iterexp iterexps iterexps' + ) fcalls in + let ids = List.map get_bind_id binds in + let ids', new_binds, new_prems = List.fold_left (fun acc fcall -> + let ids', binds', prems = acc in + let new_var, bind, prem = create_fun_prem (ids @ ids') fcall in + new_var :: ids', bind :: binds', prem :: prems + ) ([], [], []) fcalls' + in + let call_map = List.fold_left2 (fun map var_id ((fun_id, args, typ), _, iter_num) -> + let var_exp = VarE (var_id $ fun_id.at) $$ fun_id.at % typ in + let call_exp = CallE (fun_id, args) $$ fun_id.at % typ in + ExpMap.add call_exp (var_exp, iter_num) map + ) ExpMap.empty (List.rev ids') fcalls' + in + call_map, new_binds, new_prems + +let rec transform_iter call_map env i = + match i with + | ListN (exp, id_opt) -> ListN (fst (transform_exp call_map env exp), id_opt) + | _ -> i + +and transform_typ call_map env t = + let it, iter_ids = (match t.it with + | VarT (id, args) -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + VarT (id, args'), List.concat iter_ids_list + | TupT exp_typ_pairs -> + let pairs, iter_ids_list = List.split (List.map (fun (e, t) -> + let e', iter_ids = transform_exp call_map env e in + let t', iter_ids2 = transform_typ call_map env t in + (e', t'), iter_ids @ iter_ids2) exp_typ_pairs) in + TupT pairs, List.concat iter_ids_list + | IterT (typ, iter) -> + let typ', iter_ids = transform_typ call_map env typ in + IterT (typ', transform_iter call_map env iter), iter_ids + | typ -> typ, [] + ) in + {t with it}, iter_ids + +and transform_typ_normal call_map env t = fst (transform_typ call_map env t) +and transform_exp call_map env e: (exp * (id * typ * int) list) = + let t_func = transform_exp call_map env in + let it, iter_ids = (match e.it with + | CaseE (m, e1) -> + let e1', iter_ids = t_func e1 in + CaseE (m, e1'), iter_ids + | StrE fields -> + let fields', iter_ids = List.split (List.map (fun (a, e1) -> + let e1', iter_ids = t_func e1 in + (a, e1'), iter_ids) fields) in + StrE fields', List.concat iter_ids + | UnE (unop, optyp, e1) -> + let e1', iter_ids = t_func e1 in + UnE (unop, optyp, e1'), iter_ids + | BinE (binop, optyp, e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + BinE (binop, optyp, e1', e2'), iter_ids @ iter_ids2 + | CmpE (cmpop, optyp, e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CmpE (cmpop, optyp, e1', e2'), iter_ids @ iter_ids2 + | TupE (exps) -> + let exps', iters_ids = List.split (List.map t_func exps) in + TupE exps', List.concat iters_ids + | ProjE (e1, n) -> + let e1', iter_ids = t_func e1 in + ProjE (e1', n), iter_ids + | UncaseE (e1, m) -> + let e1', iter_ids = t_func e1 in + UncaseE (e1', m), iter_ids + | OptE (Some e1) -> + let e1', iter_ids = t_func e1 in + OptE (Some e1'), iter_ids + | TheE e1 -> + let e1', iter_ids = t_func e1 in + TheE e1', iter_ids + | DotE (e1, a) -> + let e1', iter_ids = t_func e1 in + DotE (e1', a), iter_ids + | CompE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CompE (e1', e2'), iter_ids @ iter_ids2 + | ListE exps -> + let exps', iters_ids = List.split (List.map t_func exps) in + ListE exps', List.concat iters_ids + | LiftE e1 -> + let e1', iter_ids = t_func e1 in + LiftE e1', iter_ids + | MemE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + MemE (e1', e2'), iter_ids @ iter_ids2 + | LenE e1 -> + let e1', iter_ids = t_func e1 in + LenE e1', iter_ids + | CatE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + CatE (e1', e2'), iter_ids @ iter_ids2 + | IdxE (e1, e2) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + IdxE (e1', e2'), iter_ids @ iter_ids2 + | SliceE (e1, e2, e3) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + let e3', iter_ids3 = t_func e3 in + SliceE (e1', e2', e3'), iter_ids @ iter_ids2 @ iter_ids3 + | IfE (e1, e2, e3) -> + let e1', iter_ids = t_func e1 in + let e2', iter_ids2 = t_func e2 in + let e3', iter_ids3 = t_func e3 in + IfE (e1', e2', e3'), iter_ids @ iter_ids2 @ iter_ids3 + | UpdE (e1, p, e2) -> + let e1', iter_ids = t_func e1 in + let p', iter_ids2 = transform_path call_map env p in + let e2', iter_ids3 = t_func e2 in + UpdE (e1', p', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | ExtE (e1, p, e2) -> + let e1', iter_ids = t_func e1 in + let p', iter_ids2 = transform_path call_map env p in + let e2', iter_ids3 = t_func e2 in + ExtE (e1', p', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | CallE (id, args) -> + let e' = {e with it = CallE (fun_prefix ^ id.it $ id.at, args)} in + begin match (ExpMap.find_opt e' call_map) with + | Some (e', 0) -> e'.it, [] + | Some ({it = VarE id; note; _} as e', n) -> e'.it, [(id, note, n - 1)] + | _ -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + CallE (id, args'), List.concat iter_ids_list + end + | IterE (e1, (iter, id_exp_pairs)) -> + let e1', iter_ids = t_func e1 in + let free_vars = (Free.free_exp e1').varid in + let new_id_exp_pairs = List.map (fun (id, typ, _) -> + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + (id, VarE (apply_iter_to_var id.it iter $ id.at) $$ id.at % itert) + ) iter_ids in + let new_iter_ids = List.filter_map (fun (id, typ, num) -> + if num = 0 then None else + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + Some (apply_iter_to_var id.it iter $ id.at, itert, num - 1) + ) iter_ids in + let id_exp_pairs_filtered, more_iter_ids = List.split (List.filter_map (fun (id, iter_e) -> + if not (Free.Set.mem id.it free_vars) then None else + let iter_e', iter_ids = t_func iter_e in + Some ((id, iter_e'), iter_ids) + ) id_exp_pairs) + in + IterE (e1', (transform_iter call_map env iter, new_id_exp_pairs @ id_exp_pairs_filtered)), + new_iter_ids @ List.concat more_iter_ids + | CvtE (e1, nt1, nt2) -> + let e1', iter_ids = t_func e1 in + CvtE (e1', nt1, nt2), iter_ids + | SubE (e1, t1, t2) -> + let e1', iter_ids = t_func e1 in + let t1', iter_ids2 = transform_typ call_map env t1 in + let t2', iter_ids3 = transform_typ call_map env t2 in + SubE (e1', t1', t2'), iter_ids @ iter_ids2 @ iter_ids3 + | exp -> exp, []) in + {e with it}, iter_ids + +and transform_path call_map env path = + let it, iter_ids = (match path.it with + | RootP -> RootP, [] + | IdxP (p, e1) -> + let p', iter_ids = transform_path call_map env p in + let e1', iter_ids2 = transform_exp call_map env e1 in + IdxP (p', e1'), iter_ids @ iter_ids2 + | SliceP (p, e1, e2) -> + let p', iter_ids = transform_path call_map env p in + let e1', iter_ids2 = transform_exp call_map env e1 in + let e2', iter_ids3 = transform_exp call_map env e2 in + SliceP (p', e1', e2'), iter_ids @ iter_ids2 @ iter_ids3 + | DotP (p, a) -> + let p', iter_ids = transform_path call_map env p in + DotP (p', a), iter_ids + ) in + {path with it}, iter_ids + +and transform_exp_normal call_map env e = fst (transform_exp call_map env e) + +and transform_sym call_map env s = + let it, iter_ids = (match s.it with + | VarG (id, args) -> + let args', iter_ids_list = List.split (List.map (transform_arg call_map env) args) in + VarG (id, args'), List.concat iter_ids_list + | SeqG syms -> + let syms', iter_ids_list = List.split (List.map (transform_sym call_map env) syms) in + SeqG syms', List.concat iter_ids_list + | AltG syms -> + let syms', iter_ids_list = List.split (List.map (transform_sym call_map env) syms) in + AltG syms', List.concat iter_ids_list + | RangeG (syml, symu) -> + let syml', iter_ids = transform_sym call_map env syml in + let symu', iter_ids2 = transform_sym call_map env symu in + RangeG (syml', symu'), iter_ids @ iter_ids2 + | IterG (sym, (iter, id_exp_pairs)) -> + let sym', iter_ids = transform_sym call_map env sym in + IterG (sym', (transform_iter call_map env iter, + List.map (fun (id, exp) -> (id, fst (transform_exp call_map env exp))) id_exp_pairs) + ), iter_ids + | AttrG (e, sym) -> + let e', iter_ids = transform_exp call_map env e in + let sym', iter_ids2 = transform_sym call_map env sym in + AttrG (e', sym'), iter_ids @ iter_ids2 + | sym -> sym, [] + ) in + {s with it}, iter_ids + +and transform_arg call_map env a: arg * (id * typ * int) list = + let it, iter_ids = (match a.it with + | ExpA exp -> + let exp', iter_ids = transform_exp call_map env exp in + ExpA exp', iter_ids + | TypA typ -> + let typ', iter_ids = transform_typ call_map env typ in + TypA typ', iter_ids + | DefA id -> DefA id, [] + | GramA sym -> + let sym', iter_ids = transform_sym call_map env sym in + GramA sym', iter_ids + ) in + {a with it}, iter_ids + +and transform_bind env b = + (match b.it with + | ExpB (id, typ) -> ExpB (id, transform_typ_normal ExpMap.empty env typ) + | TypB id -> TypB id + | DefB (id, params, typ) -> DefB (id, List.map (transform_param ExpMap.empty env) params, transform_typ_normal ExpMap.empty env typ) + | GramB (id, params, typ) -> GramB (id, List.map (transform_param ExpMap.empty env) params, transform_typ_normal ExpMap.empty env typ) + ) $ b.at + +and transform_param call_map env p = + (match p.it with + | ExpP (id, typ) -> ExpP (id, transform_typ_normal call_map env typ) + | TypP id -> TypP id + | DefP (id, params, typ) -> DefP (id, List.map (transform_param call_map env) params, transform_typ_normal call_map env typ) + | GramP (id, typ) -> GramP (id, transform_typ_normal call_map env typ) + ) $ p.at + +let rec transform_prem call_map env prem = + let it, iter_ids = match prem.it with + | RulePr (id, m, e) -> + let e', iter_ids = transform_exp call_map env e in + RulePr (id, m, e'), iter_ids + | IfPr e -> + let e', iter_ids = transform_exp call_map env e in + IfPr e', iter_ids + | LetPr (e1, e2, ids) -> + (* TODO - properly handle this if it actually gets used *) + let e1', iter_ids = transform_exp call_map env e1 in + let e2', iter_ids2 = transform_exp call_map env e2 in + LetPr (e1', e2', ids), iter_ids @ iter_ids2 + | ElsePr -> ElsePr, [] + | IterPr (prem1, (iter, id_exp_pairs)) -> + let prem1', iter_ids = transform_prem call_map env prem1 in + let free_vars = (Free.free_prem prem1').varid in + let new_id_exp_pairs = List.map (fun (id, typ, _) -> + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + (id, VarE (apply_iter_to_var id.it iter $ id.at) $$ id.at % itert) + ) iter_ids in + let new_iter_ids = List.filter_map (fun (id, typ, num) -> + if num = 0 then None else + let itert = IterT (typ, transform_typ_iter iter) $ typ.at in + Some (apply_iter_to_var id.it iter $ id.at, itert, num - 1) + ) iter_ids in + let id_exp_pairs_filtered, more_iter_ids = List.split (List.filter_map (fun (id, iter_e) -> + if not (Free.Set.mem id.it free_vars) then None else + let iter_e' , iter_ids = transform_exp call_map env iter_e in + Some ((id, iter_e'), iter_ids) + ) id_exp_pairs) in + IterPr (prem1', (transform_iter call_map env iter, new_id_exp_pairs @ id_exp_pairs_filtered)), + new_iter_ids @ List.concat more_iter_ids + | NegPr p -> + let p', iter_ids = transform_prem call_map env p in + NegPr p', iter_ids + in + {prem with it}, iter_ids + +and transform_prem_normal call_map env prem = fst (transform_prem call_map env prem) + +let transform_rule env rule = + (match rule.it with + | RuleD (id, binds, m, exp, prems) -> + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in + let call_map, new_binds, new_prems = create_call_map fcalls binds in + RuleD (id.it $ no_region, + List.map (transform_bind env) (binds @ new_binds), + m, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) + ) $ rule.at + +let transform_clause env clause = + (match clause.it with + | DefD (binds, args, exp, prems) -> + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in + let call_map, new_binds, new_prems = create_call_map fcalls binds in + DefD ( + List.map (transform_bind env) (binds @ new_binds), + args, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) + ) $ clause.at + +let transform_prod env prod = + match prod.it with + | ProdD (binds, sym, exp, prems) -> + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in + let call_map, new_binds, new_prems = create_call_map fcalls binds in + ProdD (List.map (transform_bind env) (binds @ new_binds), + sym, + transform_exp_normal call_map env exp, + List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ prod.at + +let is_exp_param param = + match param.it with + | ExpP _ -> true + | _ -> false + +let utilizes_rel_def env e = + match e.it with + | CallE (id, _) -> (StringSet.mem id.it env.rel_set, true) + | _ -> (false, true) + +let collect_list_length_vars () : StringSet.t ref * (module Iter.Arg) = + let module Arg = + struct + include Iter.Skip + let acc = ref StringSet.empty + let visit_exp exp = + match exp.it with + | IterE (_, (ListN ({it = VarE id; _}, _), [_])) -> + acc := StringSet.add id.it !acc + | _ -> () + end + in Arg.acc, (module Arg) + +let must_be_relation env id params clauses = + let listn_set, (module Arg : Iter.Arg) = collect_list_length_vars () in + let rel_def_checker = { exists_base_checker with collect_exp = utilizes_rel_def env} in + assert (!listn_set = StringSet.empty); + let module Acc = Iter.Make(Arg) in + (* Current limitation of relations - can only have standard types. + No type parameters or higher order functions *) + List.for_all is_exp_param params && + (* Limitation - functions used as def ids cannot be relations *) + not (StringSet.mem id.it env.def_arg_set) && + List.exists (fun c -> match c.it with + | DefD (binds, args, exp, prems) -> + Acc.args args; + (* Premises might not be decidable *) + prems <> [] || + (* Functions that have function calls transformed to relations must also be relations *) + collect_exp rel_def_checker exp || + List.exists (collect_prem rel_def_checker) prems || + (* Checking if equality binding is active *) + fst (List.fold_left (fun (acc_bool, free_set) arg -> + let free_vars = Free.free_arg arg in + (acc_bool || Free.inter free_vars free_set <> Free.empty, Free.union free_vars free_set) + ) (false, Free.empty) args) || + (* There are more binded variables than utilized in the arguments *) + let bounded_vars = Free.free_list Free.bound_bind binds in + let free_vars = Free.free_list Free.free_arg args in + Free.diff bounded_vars free_vars <> Free.empty || + (* HACK - dealing with list of a specified length with relations instead of functions *) + !listn_set <> StringSet.empty + ) clauses + +let get_tuple_exp e = + match e.it with + | TupE exps -> exps + | _ -> [e] + +(* + This function filters out premises that were function calls before. It only filters them out if they are + not being used in the premises following it. It assumes that the premises are in order (at the very least, + that function calls return variables are not used beforehand) which is true by the construction above. + This avoids the problem with violating strictly positive condition for inductive relations when the recursive + function call appears in the return expression. This does not however prevent the violation of the condition + completely, as any recursive function call that appears as a pattern guard will violate this (as long as the + fallthrough semantics is enforced). +*) +let rec filter_return_prems prems = + let pred p ps = + match p.it with + | RulePr (id, _, {it = TupE exps; _}) when String.starts_with ~prefix:fun_prefix id.it -> + let last_exp = Lib.List.last_opt exps in + begin match last_exp with + | None -> true + | Some exp -> + let free_vars = (Free.free_exp exp).varid in + let free_vars_prems = (Free.free_list Free.free_prem ps).varid in + Free.Set.inter free_vars free_vars_prems <> Free.Set.empty + end + | _ -> true + in + match prems with + | [] -> [] + | p :: ps when pred p ps -> p :: filter_return_prems ps + | _ :: ps -> filter_return_prems ps + +let generate_matching_rules env args tupt r = + match r.it with + | RuleD (id, binds, mixop, exp', prems) -> + let (args', _) = Lib.List.split_last (get_tuple_exp exp') in + let new_exp = TupE args' $$ exp'.at % tupt in + (try Eval.match_list Eval.match_exp env.il_env Subst.empty args' args with Eval.Irred -> None) |> + Option.map (fun _ -> + {r with it = RuleD (id, binds, List.tl mixop, new_exp, filter_return_prems prems)} + ) + +let is_otherwise prem = + match prem.it with + | ElsePr -> true + | _ -> false + +let fall_through_prems env id mixop typs rules = + let gen_rel_name rid = + id.it ^ "_before_" ^ rid.it $ id.at + in + let rec go prev_rules = function + | [] -> [ RelD (id, mixop, TupT typs $ id.at, List.rev prev_rules) $ id.at ] + | ({it = RuleD (rid, binds, m, exp, prems); _} as r) :: rs when List.exists is_otherwise prems -> + let (args, _) = Lib.List.split_last (get_tuple_exp exp) in + let (typs', _) = Lib.List.split_last typs in + let tupt = TupT typs' $ id.at in + let rules' = + List.filter_map (generate_matching_rules env args tupt) prev_rules + in + let prems' = List.filter (fun p -> p.it <> ElsePr) prems in + if rules' = [] then go ({ r with it = RuleD (rid, binds, m, exp, prems') } :: prev_rules) rs else + let relation = RelD (gen_rel_name rid, List.tl mixop, tupt, rules') $ id.at in + let negrulepr = NegPr (RulePr (gen_rel_name rid, List.tl mixop, TupE args $$ exp.at % tupt) $ rid.at) $ rid.at in + let new_rule = { r with it = RuleD (rid, binds, m, exp, negrulepr :: prems') } in + relation :: go (new_rule :: prev_rules) rs + | r :: rs -> go (r :: prev_rules) rs + in + go [] rules + +let cvt_def_to_rel env id params r_typ clauses = + let get_param_typ p = + match p.it with + | ExpP (_, t) -> t + | _ -> assert false + in + let types = List.map get_param_typ params @ [r_typ] in + let tup_types = (List.map (fun t -> (VarE ("_" $ id.at) $$ id.at % t), t) types) in + let new_mixop = [] :: List.init (List.length params + 1) (fun _ -> []) in + let rules = List.mapi (fun i clause -> + match clause.it with + | DefD (binds, args, exp, prems) -> + let exps = List.map get_exp_arg args in + let c = create_collector [] env in + let fcalls = collect_exp c exp @ List.concat_map (collect_prem c) prems in + let call_map, new_binds, new_prems = create_call_map fcalls binds in + let tupe = TupE (exps @ [transform_exp_normal call_map env exp]) $$ id.at % (TupT tup_types $ id.at) in + RuleD (fun_prefix ^ id.it ^ "_case_" ^ Int.to_string i $ id.at, binds @ new_binds, new_mixop, tupe, List.map (transform_prem_normal call_map env) (new_prems @ prems)) $ id.at + ) clauses + in + let new_id = { id with it = fun_prefix ^ id.it } in + fall_through_prems env new_id new_mixop tup_types rules + +let uses_def ids_set def = + match def.it with + | RelD (_, _, _, rules) -> + let free_defs = (Free.free_list (Free.free_rule) rules).relid in + Free.Set.inter free_defs ids_set <> Free.Set.empty + | _ -> false + +let rec transform_def (env : env) def = + (* let must_be_rel_def d = + match d.it with + | DecD (id, params, _, clauses) -> must_be_relation env id params clauses + | _ -> false + in *) + let has_exp_params d = + match d.it with + | DecD (_, params, _, _) -> List.for_all is_exp_param params + | _ -> false + in + (match def.it with + | RelD (id, m, typ, rules) -> + [{ def with it = RelD (id, m, typ, List.map (transform_rule env) rules) }] + | DecD (id, params, typ, clauses) when must_be_relation env id params clauses -> + env.rel_set <- StringSet.add id.it env.rel_set; + cvt_def_to_rel env id params typ clauses + | DecD (id, params, typ, clauses) -> + [{ def with it = DecD (id, params, typ, List.map (transform_clause env) clauses) }] + | RecD defs when List.for_all has_exp_params defs -> + let ids_ref = ref StringSet.empty in + List.iter (fun d -> match d.it with + | DecD (id, _, _, _) -> + ids_ref := StringSet.add (fun_prefix ^ id.it) !ids_ref; + env.rel_set <- StringSet.add id.it env.rel_set + | _ -> () + ) defs; + let rec_defs, filtered_defs = defs |> + List.concat_map (transform_def env) |> + List.partition (uses_def !ids_ref) + in + filtered_defs @ [{ def with it = RecD rec_defs }] + | RecD defs -> [{ def with it = RecD (List.concat_map (transform_def env) defs) }] + | GramD (id, params, typ, prods) -> [{ def with it = GramD (id, params, typ, List.map (transform_prod env) prods) }] + | d -> [d $ def.at] + ) + +let collect_def_args (): StringSet.t ref * (module Iter.Arg) = + let module Arg = + struct + include Iter.Skip + let acc = ref StringSet.empty + let visit_arg arg = + match arg.it with + | DefA id -> acc := StringSet.add id.it !acc + | _ -> () + end + in Arg.acc, (module Arg) + +let transform (il : script): script = + let env = empty_env in + env.il_env <- Il.Env.env_of_script il; + let acc, (module Arg : Iter.Arg) = collect_def_args () in + let module Acc = Iter.Make(Arg) in + List.iter Acc.def il; + env.def_arg_set <- !acc; + List.concat_map (transform_def env) il \ No newline at end of file diff --git a/spectec/src/middlend/deftorel.mli b/spectec/src/middlend/deftorel.mli new file mode 100644 index 0000000000..64d020ff9d --- /dev/null +++ b/spectec/src/middlend/deftorel.mli @@ -0,0 +1 @@ +val transform : Il.Ast.script -> Il.Ast.script \ No newline at end of file diff --git a/spectec/src/middlend/dune b/spectec/src/middlend/dune index c2bc064072..a6c1de498a 100644 --- a/spectec/src/middlend/dune +++ b/spectec/src/middlend/dune @@ -10,10 +10,13 @@ else undep utils + deftorel subexpansion uncaseremoval aliasDemut improveids ite + elsesimp + letintro ) ) diff --git a/spectec/src/middlend/else.ml b/spectec/src/middlend/else.ml index 001c5cc04e..cfc375ce8d 100644 --- a/spectec/src/middlend/else.ml +++ b/spectec/src/middlend/else.ml @@ -27,6 +27,8 @@ module StringSet = Set.Make(String) let env_ref = ref Il.Env.empty +let else_relation_hint_id = "else-relation" + (* Brought from Apart.ml *) (* Looks at an expression of type list from the back and chops off all @@ -153,6 +155,8 @@ let unarize rule = match rule.it with let not_apart lhs rule = match rule.it with | RuleD (_, _, _, lhs2, _) -> not (apart lhs lhs2) +let generate_else_rel_hint rel_id at: hint = { hintid = else_relation_hint_id $ at; hintexp = El.Ast.TextE rel_id.it $ at} + let rec go hint_map used_names at id mixop typ typ1 prev_rules : rule list -> def list = function | [] -> [ RelD (id, mixop, typ, List.rev prev_rules) $ at ] | r :: rules -> match r.it with @@ -177,8 +181,8 @@ let rec go hint_map used_names at id mixop typ typ1 prev_rules : rule list -> de else [ RelD (aux_name, unary_mixfix, typ1, applicable_prev_rules) $ r.at ] @ let extra_hintdef = match (StringMap.find_opt id.it hint_map) with - | Some hints -> [ HintD (RelH (aux_name, hints) $ at) $ at ] - | _ -> [] + | Some hints -> [ HintD (RelH (aux_name, generate_else_rel_hint id at :: hints) $ at) $ at ] + | _ -> [ HintD (RelH (aux_name, [generate_else_rel_hint id at]) $ at) $ at ] in let prems' = List.map (replace_else aux_name lhs) prems in let rule' = { r with it = RuleD (rid, binds, rmixop, exp, prems') } in diff --git a/spectec/src/middlend/else.mli b/spectec/src/middlend/else.mli index 542bbf8052..d22a0af7e2 100644 --- a/spectec/src/middlend/else.mli +++ b/spectec/src/middlend/else.mli @@ -1 +1,2 @@ +val else_relation_hint_id: string val transform : Il.Ast.script -> Il.Ast.script diff --git a/spectec/src/middlend/elsesimp.ml b/spectec/src/middlend/elsesimp.ml new file mode 100644 index 0000000000..23b91ef38e --- /dev/null +++ b/spectec/src/middlend/elsesimp.ml @@ -0,0 +1,168 @@ +open Il.Ast +open Util.Source +open Util +open Il + +module StringMap = Map.Make(String) +module StringSet = Set.Make(String) + +type env = +{ + il_env : Il.Env.t; + mutable rel_to_else_map : text list StringMap.t; + mutable else_set_to_remove : StringSet.t; + mutable wf_relations : StringSet.t +} + +let new_env il = { + il_env = Il.Env.env_of_script il; + rel_to_else_map = StringMap.empty; + else_set_to_remove = StringSet.empty; + wf_relations = StringSet.empty +} + +let is_else_rel_hint hint = hint.hintid.it = Else.else_relation_hint_id +let is_wf_rel_hint hint = hint.hintid.it = Undep.wf_hint_id + +let bind_else_set env id = + env.else_set_to_remove <- StringSet.add id env.else_set_to_remove + +let register_else_rel env id base_rel_id = + env.rel_to_else_map <- StringMap.update base_rel_id (fun opt -> + match opt with + | Some ids -> Some (id.it :: ids) + | _ -> Some [id.it] + ) env.rel_to_else_map + +let register_wf_rel env id = + env.wf_relations <- StringSet.add id.it env.wf_relations + +let rec register_hints env (def : def) = + match def.it with + | HintD {it = RelH (id, hints); _} when List.exists is_wf_rel_hint hints -> + register_wf_rel env id + | HintD {it = RelH (id, hints); _} when List.exists is_else_rel_hint hints -> + begin match List.find_opt is_else_rel_hint hints with + | Some {hintexp = { it = TextE rel_id; _}; _} -> + register_else_rel env id rel_id + | _ -> () + end + | RecD defs -> List.iter (register_hints env) defs + | _ -> () + +let (let*) = Option.bind + +let is_boolean_prem prem = + match prem.it with + | IfPr _ -> true + (* | IterPr (p, _) -> is_boolean_prem p *) + | _ -> false + +let neg_cmpop cmpop = + match cmpop with + | `LeOp -> `GtOp + | `GtOp -> `LeOp + | `GeOp -> `LtOp + | `LtOp -> `GeOp + | `EqOp -> `NeOp + | `NeOp -> `EqOp + +let rec neg_exp exp = + { exp with it = + match exp.it with + | CmpE (cmpop, optyp, e1, e2) -> CmpE (neg_cmpop cmpop, optyp, e1, e2) + | BinE (`AndOp, optyp, e1, e2) -> BinE (`OrOp, optyp, neg_exp e1, neg_exp e2) + | BinE (`OrOp, optyp, e1, e2) -> BinE (`AndOp, optyp, neg_exp e1, neg_exp e2) + | UnE (`NotOp, _, e1) -> e1.it + | _ -> UnE (`NotOp, `BoolT, exp) + } + +let get_exp prem = + match prem.it with + | IfPr exp -> Some (neg_exp exp) + | _ -> None + +let is_wf_or_neg_prem else_ids env prem = + match prem.it with + | RulePr (id, _, _) -> StringSet.mem id.it env.wf_relations + | NegPr { it = RulePr (id, _, _); _} -> List.mem id.it else_ids + | _ -> false + +let is_neg_prem else_ids prem = + match prem.it with + | NegPr { it = RulePr (id, _, _); _} -> List.mem id.it else_ids + | _ -> false + +let is_in_bind (free_sets : Free.sets) b = + match b.it with + | ExpB (id, _) -> Free.Set.mem id.it free_sets.varid + | TypB id -> Free.Set.mem id.it free_sets.typid + | DefB (id, _, _) -> Free.Set.mem id.it free_sets.defid + | GramB (id, _, _) -> Free.Set.mem id.it free_sets.gramid + +let t_rule env else_ids rule = + let RuleD (id, binds, m, exp, prems) = rule.it in + let* else_id = List.find_opt (fun id -> List.exists (is_neg_prem [id]) prems) else_ids in + let* else_relation = Il.Env.find_opt_rel env.il_env (else_id $ no_region) in + let (_, _, rules) = else_relation in + let free_vars_binds = Free.free_list Free.bound_bind binds in + let prems_list, binds' = List.map (fun r -> + let RuleD (_, binds', _, _, prems') = r.it in + let free_vars = Free.diff (Free.free_list Free.free_prem prems') free_vars_binds in + Lib.List.filter_not (is_wf_or_neg_prem else_ids env) prems', List.filter (is_in_bind free_vars) binds' + ) rules |> List.split in + let binds' = List.concat binds' in + + if prems_list = [] || not (List.for_all (fun prems' -> List.for_all is_boolean_prem prems') prems_list) then None else + let neg_exps = List.filter_map (fun prems' -> + let exps = List.filter_map get_exp prems' in + match exps with + | [] -> None + | x :: xs -> + Some (List.fold_left (fun acc exp -> BinE (`OrOp, `BoolT, acc, exp) $$ x.at % (BoolT $ x.at)) x xs) + ) prems_list in + let new_prems = List.map (fun e -> IfPr e $ e.at) neg_exps in + bind_else_set env else_id; + Some { rule with it = RuleD (id, binds @ binds', m, exp, new_prems @ Lib.List.filter_not (is_neg_prem else_ids) prems) } + +let rec t_def env d = + {d with it = + match d.it with + | RelD (id, m, typ, rules) when StringMap.mem id.it env.rel_to_else_map -> + let else_ids = StringMap.find id.it env.rel_to_else_map in + RelD (id, m, typ, List.map (fun r -> match (t_rule env else_ids r) with + | None -> r + | Some r' -> r' + ) rules) + | RecD defs -> RecD (List.map (t_def env) defs) + | d' -> d' + } + +let is_part_of_else_set env d = + match d.it with + | RelD (id, _, _, _) -> StringSet.mem id.it env.else_set_to_remove + | _ -> false + +let filter_else_set env: (module Iter.Arg) = + let module Arg = + struct + include Iter.Skip + let visit_prem prem = + match prem.it with + | RulePr (id, _, _) when StringSet.mem id.it env.else_set_to_remove -> + env.else_set_to_remove <- StringSet.remove id.it env.else_set_to_remove + | _ -> () + end + in (module Arg) + +let transform defs = + let env = new_env defs in + List.iter (register_hints env) defs; + let defs' = List.map (t_def env) defs in + let (module Arg) = filter_else_set env in + let module Acc = Iter.Make(Arg) in + (* Remove still existing else relations from set*) + List.iter Acc.def defs'; + (* Filter out remaining else relations *) + Lib.List.filter_not (is_part_of_else_set env) defs' + diff --git a/spectec/src/middlend/elsesimp.mli b/spectec/src/middlend/elsesimp.mli new file mode 100644 index 0000000000..542bbf8052 --- /dev/null +++ b/spectec/src/middlend/elsesimp.mli @@ -0,0 +1 @@ +val transform : Il.Ast.script -> Il.Ast.script diff --git a/spectec/src/middlend/improveids.ml b/spectec/src/middlend/improveids.ml index 3b74aeeb55..0bc7381e05 100644 --- a/spectec/src/middlend/improveids.ml +++ b/spectec/src/middlend/improveids.ml @@ -75,17 +75,26 @@ let has_atom_hole m = | [{it = Atom "_"; _}] -> true | _ -> false +let register_atom_id env s = + env.atom_str_set <- StringSet.add s env.atom_str_set + (* Atom functions *) let transform_atom env typ_id a = match a.it with - | Atom s -> Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note - | _ -> Atom (make_prefix ^ typ_id) $$ a.at % a.note + | Atom s -> + register_atom_id env (t_user_def_id env (s $ a.at)).it; + Atom (t_user_def_id env (s $ a.at)).it $$ a.at % a.note + | _ -> + register_atom_id env (make_prefix ^ typ_id); + Atom (make_prefix ^ typ_id) $$ a.at % a.note let transform_mixop env typ_id (m : mixop) = let m' = List.map (fun inner_m -> List.filter is_atomid inner_m) m in let len = List.length m' in match m' with - | _ when List.for_all (fun l -> l = [] || has_atom_hole l) m' -> [(Atom (make_prefix ^ typ_id) $$ empty_info)] :: List.init (len - 1) (fun _ -> []) + | _ when List.for_all (fun l -> l = [] || has_atom_hole l) m' -> + register_atom_id env (make_prefix ^ typ_id); + [(Atom (make_prefix ^ typ_id) $$ empty_info)] :: List.init (len - 1) (fun _ -> []) | _ -> List.map (List.map (transform_atom env typ_id)) m' let rec check_iteration_naming e iterexp = @@ -149,6 +158,12 @@ let t_inst tf env id inst = ) ) $ inst.at +(* Necessary to reset ids due to change on iterE *) +let t_prem prem = + { prem with it = match prem.it with + | LetPr (e1, e2, _) -> LetPr (e1, e2, Free.Set.elements (Free.free_exp e1).varid) + | p -> p } + let transform_rule tf env rel_id rule = (match rule.it with | RuleD (id, binds, m, exp, prems) -> @@ -164,7 +179,8 @@ let rec t_def env def = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ env; - transform_path = t_path env; + transform_path = t_path env; + transform_prem = t_prem; transform_var_id = t_var_id env; transform_typ_id = t_user_def_id env; transform_rel_id = t_user_def_id env; diff --git a/spectec/src/middlend/letintro.ml b/spectec/src/middlend/letintro.ml new file mode 100644 index 0000000000..8c2b9961fb --- /dev/null +++ b/spectec/src/middlend/letintro.ml @@ -0,0 +1,72 @@ +open Il.Ast +open Util.Source +open Il +open Il.Walk + +let construct_let_prem exp1 exp2 at = + LetPr (exp1, exp2, Free.Set.elements (Free.free_exp exp1).varid) $ at + +let diff = Free.Set.diff +let union = Free.Set.union +let empty = Free.Set.empty + +let valid_exp exp = + let continue = true in + let validity = + match exp.it with + | StrE _ + | TupE _ + | CaseE _ + | IterE _ + | VarE _ -> true + | _ -> false + in + (validity, continue) + +let inferrable_exp exp = + let continue = true in + let validity = + match exp.it with + (* OptE (for some reason) and StrE can never have their types inferred *) + | OptE _ + | StrE _ -> false + | _ -> true + in + (validity, continue) + +let t_prems free_vars_start prems = + let valid_lhs_checker = { forall_base_checker with collect_exp = valid_exp } in + let valid_rhs_checker = { forall_base_checker with collect_exp = inferrable_exp } in + List.fold_left ( fun (free, prev_prems) p -> + let free_vars = (Free.free_prem p).varid in + match p.it with + | IfPr {it = CmpE (`EqOp, _, exp1, exp2); _} + when diff (Free.free_exp exp1).varid free <> empty && + diff (Free.free_exp exp2).varid free = empty && + collect_exp valid_lhs_checker exp1 && + collect_exp valid_rhs_checker exp2 -> + (union free free_vars, construct_let_prem exp1 exp2 p.at :: prev_prems) + | IfPr {it = CmpE (`EqOp, _, exp1, exp2); _} + when diff (Free.free_exp exp1).varid free = empty && + diff (Free.free_exp exp2).varid free <> empty && + collect_exp valid_lhs_checker exp2 && + collect_exp valid_rhs_checker exp1 -> + (union free free_vars, construct_let_prem exp2 exp1 p.at :: prev_prems) + | _ -> (union free free_vars, p :: prev_prems) + ) (free_vars_start, []) prems |> + snd |> + List.rev + +let t_clause c = + let { it = DefD (binds, args, exp, prems); _} = c in + let free_vars = (Free.free_list Free.free_arg args).varid in + { c with it = DefD (binds, args, exp, t_prems free_vars prems) } + +let rec t_def d = + match d.it with + | DecD (id, params, typ, clauses) -> + { d with it = DecD (id, params, typ, List.map t_clause clauses) } + | RecD defs -> RecD (List.map t_def defs) $ d.at + | _ -> d + +let transform defs = List.map t_def defs diff --git a/spectec/src/middlend/letintro.mli b/spectec/src/middlend/letintro.mli new file mode 100644 index 0000000000..542bbf8052 --- /dev/null +++ b/spectec/src/middlend/letintro.mli @@ -0,0 +1 @@ +val transform : Il.Ast.script -> Il.Ast.script diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index 99d6f9db72..b9a49bd1d0 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -167,7 +167,7 @@ let rec rename_params s = function let lookup_arg_typ typcases m = List.find_map (fun (m', (_, arg_typ, _), _) -> if Il.Eq.eq_mixop m m' then Some arg_typ else None) typcases -let insert_injections env (def : def) : def list = +let insert_injections transformer env (def : def) : def list = add_type_info env def; let pairs = ready_pairs env in [ def ] @ @@ -196,7 +196,7 @@ let insert_injections env (def : def) : def list = let xe is_lhs = TupE (xes is_lhs) $$ no_region % arg_typ in DefD (binds, [ExpA (CaseE (m, xe true) $$ no_region % real_ty) $ no_region], - t_exp env (CaseE (m, xe false) $$ no_region % sup_ty), []) $ no_region + transform_exp transformer (CaseE (m, xe false) $$ no_region % sup_ty), []) $ no_region | _ -> let x = "x" $ no_region in let xe = VarE x $$ no_region % arg_typ in @@ -213,6 +213,6 @@ let transform (defs : script) = let transformer = { base_transformer with transform_exp = t_exp env } in let defs' = List.map (transform_def transformer) defs in env.pairs_mutable <- false; - let defs'' = List.concat_map (insert_injections env) defs' in + let defs'' = List.concat_map (insert_injections transformer env) defs' in S.iter (fun (sub, sup) -> error sup.at ("left-over subtype coercion `" ^ sub.it ^ "` <: `" ^ sup.it ^ "`")) env.pairs; defs'' diff --git a/spectec/src/middlend/typefamilyremoval.ml b/spectec/src/middlend/typefamilyremoval.ml index 3ac4121b71..468bc1acf7 100644 --- a/spectec/src/middlend/typefamilyremoval.ml +++ b/spectec/src/middlend/typefamilyremoval.ml @@ -60,7 +60,10 @@ type family_data = (id * bind list * Subst.t * int * typ * typ) let error at msg = Error.error at "Type families removal" msg let projection_hint_id = "tf_projection_func" -let projection_hint = { hintid = projection_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region} +let projection_hint = { hintid = projection_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region } + +let type_family_hint_id = "type_family" +let type_family_hint = { hintid = type_family_hint_id $ no_region; hintexp = El.Ast.SeqE [] $ no_region } let bind_to_string bind = match bind.it with @@ -702,7 +705,8 @@ let rec transform_type_family def = in let proj_ids, projections = List.split (List.mapi (gen_family_projections id one_inst) insts) in - let hintdefs = List.map (fun id -> HintD (DecH (id, [projection_hint]) $ def.at)) proj_ids in + let hintdefs = HintD (TypH (id, [type_family_hint]) $ def.at) :: + List.map (fun id' -> HintD (DecH (id', [projection_hint]) $ def.at)) proj_ids in TypD (id, params, [inst]) :: projections @ hintdefs | RecD defs -> [RecD (List.concat_map transform_type_family defs)] | d -> [d] diff --git a/spectec/src/middlend/typefamilyremoval.mli b/spectec/src/middlend/typefamilyremoval.mli index 00b6c75145..73bca15b30 100644 --- a/spectec/src/middlend/typefamilyremoval.mli +++ b/spectec/src/middlend/typefamilyremoval.mli @@ -1,2 +1,3 @@ val projection_hint_id : string +val type_family_hint_id : string val transform : Il.Ast.script -> Il.Ast.script diff --git a/spectec/src/middlend/uncaseremoval.ml b/spectec/src/middlend/uncaseremoval.ml index 70197d931f..a15cbd44c3 100644 --- a/spectec/src/middlend/uncaseremoval.ml +++ b/spectec/src/middlend/uncaseremoval.ml @@ -103,10 +103,16 @@ let make_bind p = | GramP _ -> assert false (* Avoid this *) ) $ p.at +let uncase_proj_hint_id = "uncase-proj-func" + +let generate_proj_func_hint at: hint = { hintid = uncase_proj_hint_id $ at; hintexp = El.Ast.SeqE [] $ at} + + let create_projection_functions id params mixops inst = let get_deftyp inst' = (match inst'.it with | InstD (_binds, _args, deftyp) -> deftyp.it ) in + let proj_name idx = (proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at in let at = inst.at in let user_typ = VarT (id, List.map make_arg params) $ at in let param_ids = List.map (fun p -> (Utils.get_param_id p).it) params in @@ -124,7 +130,7 @@ let create_projection_functions id params mixops inst = let new_arg = ExpA new_case_exp $ at in if has_one_case then let clause = DefD (List.map make_bind params @ new_binds, List.map make_arg params @ [new_arg], new_tup, []) $ at in - DecD ((proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at, new_params, no_name_tupt, [clause]) + DecD (proj_name idx, new_params, no_name_tupt, [clause]) else (* extra handling in case that it has more than one case *) let extra_arg = ExpA (VarE (fresh_name $ at) $$ at % user_typ) $ at in @@ -134,10 +140,10 @@ let create_projection_functions id params mixops inst = let opt_tup = OptE (Some new_tup) $$ at % opt_type in let clause' = DefD (List.map make_bind params @ new_binds, List.map make_arg params @ [new_arg], opt_tup, []) $ at in let extra_clause = DefD (List.map make_bind params @ new_binds @ [new_bind], List.map make_arg params @ [extra_arg], none_exp, []) $ at in - DecD ((proj_prefix ^ id.it ^ "_" ^ Int.to_string idx) $ id.at, new_params, opt_type, [clause'; extra_clause]) + DecD (proj_name idx, new_params, opt_type, [clause'; extra_clause]) in - List.map (fun m -> + List.concat_map (fun m -> (match (get_deftyp inst) with (* Should not happen due to reduction while collecting uncase expressions *) | AliasT _typ -> error inst.at "Found type alias while constructing projection functions, should not happen" @@ -149,7 +155,10 @@ let create_projection_functions id params mixops inst = Some (i, m, t) ) (List.mapi (fun i t -> (i, t)) typcases) in begin match mixop_opt with - | Some (i, m, t) -> make_func m (get_case_typs t) (List.length typcases = 1) i + | Some (idx, m, t) -> + make_func m (get_case_typs t) (List.length typcases = 1) idx :: + (* Add hint to distinguish this projection function from other functions *) + [ HintD (DecH (proj_name idx, [generate_proj_func_hint id.at]) $ id.at) ] | None -> error inst.at ("Could not find mixop " ^ Il.Print.string_of_mixop m ^ " while constructing projection functions") diff --git a/spectec/src/middlend/uncaseremoval.mli b/spectec/src/middlend/uncaseremoval.mli index 542bbf8052..4bdedd6db3 100644 --- a/spectec/src/middlend/uncaseremoval.mli +++ b/spectec/src/middlend/uncaseremoval.mli @@ -1 +1,2 @@ +val uncase_proj_hint_id : string val transform : Il.Ast.script -> Il.Ast.script diff --git a/spectec/src/middlend/undep.ml b/spectec/src/middlend/undep.ml index 44467f9869..341df88bfc 100644 --- a/spectec/src/middlend/undep.ml +++ b/spectec/src/middlend/undep.ml @@ -52,20 +52,24 @@ module StringSet = Set.Make(String) type env = { mutable wf_set : StringSet.t; mutable proj_set : StringSet.t; + mutable tf_set : StringSet.t; mutable il_env : Il.Env.t; } let empty () = { wf_set = StringSet.empty; proj_set = StringSet.empty; - il_env = Il.Env.empty + tf_set = StringSet.empty; + il_env = Il.Env.empty; } let wf_pred_prefix = "wf_" let rule_prefix = "case_" +let wf_hint_id = "wf-relation" + (* flag that deactivates adding wellformedness predicates to relations *) -let deactivate_wfness = false +let deactivate_wfness = true let error at msg = error at "Undep error" msg @@ -156,9 +160,11 @@ and t_exp env e = (* Remove every arg but last for family projections *) | CallE (id, args) when StringSet.mem id.it env.proj_set && args <> [] -> CallE (id, [(Lib.List.last args)]) - (* HACK - Change IterE of option with no iteration variable into a OptE *) + (* HACK - Change IterE of option and list with no iteration variable into a OptE *) | IterE (e1, (Opt, [])) -> - OptE (Some e1) + OptE (Some e1) + | IterE (e1, (List, [])) | IterE (e1, (List1, [])) -> + ListE [e1] | exp -> exp ) $$ e.at % e.note @@ -239,7 +245,9 @@ let get_exp_typ b = match b.it with | ExpB (id, typ) -> Some (VarE id $$ id.at % typ, typ) | _ -> None - + +let generate_well_formed_rel_hint at: hint = { hintid = wf_hint_id $ at; hintexp = El.Ast.SeqE [] $ at} + let create_well_formed_predicate env id inst = let tf = { base_transformer with transform_exp = t_exp env; transform_typ = t_typ} in let at = id.at in @@ -250,6 +258,7 @@ let create_well_formed_predicate env id inst = | _ -> None ) binds) in let tupt pairs = TupT (pairs @ [(VarE ("_" $ at) $$ at % user_typ, user_typ)]) $ at in + let hint = HintD (RelH (wf_pred_prefix ^ id.it $ id.at, [generate_well_formed_rel_hint at]) $ at) $ at in match inst.it with (* Variant well formedness predicate creation *) | InstD (binds, _args, {it = VariantT typcases; _}) -> @@ -275,10 +284,10 @@ let create_well_formed_predicate env id inst = let has_no_prems = List.for_all (fun rule -> match rule.it with | RuleD (_, _, _, _, prems) -> prems = [] ) rules in - if has_no_prems then None else - let relation = RelD (wf_pred_prefix ^ id.it $ id.at, new_mixop dep_exp_typ_pairs, tupt pairs_without_names, rules) $ at in + if has_no_prems then [] else + let relation = RelD (wf_pred_prefix ^ id.it $ id.at, new_mixop dep_exp_typ_pairs, tupt pairs_without_names, rules) $ at in bind_wf_set env id.it; - Some relation + [relation; hint] (* Struct/Record well formedness predicate creation *) | InstD (binds, _args, {it = StructT typfields; _}) -> @@ -309,19 +318,26 @@ let create_well_formed_predicate env id inst = List.map (transform_prem tf) (new_prems)) $ at in - if new_prems = [] then None else + if new_prems = [] then [] else let relation = RelD (wf_pred_prefix ^ id.it $ id.at, new_mixop dep_exp_typ_pairs, tupt pairs_without_names, [rule]) $ at in bind_wf_set env id.it; - Some relation - | _ -> None + [relation; hint] + | _ -> [] + +let rec has_type_family env typ = + match typ.it with + | VarT (id, _) -> StringSet.mem id.it env.tf_set + | IterT (typ, _) -> has_type_family env typ + | TupT typs -> List.exists (fun (_, t) -> has_type_family env t) typs + | _ -> false let get_extra_prems env binds exp prems = - if deactivate_wfness then [] else let cl = create_collector [] in let wf_terms = collect_exp cl exp @ List.concat_map (collect_prem cl) prems in let unique_terms = Util.Lib.List.nub (fun ((e1, _t1), iterexp1) ((e2, _t2), iterexp2) -> Il.Eq.eq_exp e1 e2 && Il.Eq.eq_list Il.Eq.eq_iterexp iterexp1 iterexp2 ) wf_terms in + let unique_terms = if deactivate_wfness then List.filter (fun ((_, t), _) -> has_type_family env t) unique_terms else unique_terms in let more_prems = List.concat_map (fun (pair, iterexps) -> List.map (fun prem' -> List.fold_left (fun acc iterexp -> @@ -332,7 +348,7 @@ let get_extra_prems env binds exp prems = (* Leverage the fact that the wellformed predicates are "bubbled up" and remove unnecessary wf preds*) let free_vars = (Free.free_list Free.free_prem more_prems).varid in let binds_filtered = Lib.List.filter_not (fun b -> match b.it with - | ExpB (id, _) -> Free.Set.mem id.it free_vars + | ExpB (id, typ) -> Free.Set.mem id.it free_vars || (deactivate_wfness && (not (has_type_family env typ))) | _ -> true ) binds in let bind_prems = (List.filter_map get_exp_typ binds_filtered) |> List.concat_map (get_wf_pred env) in @@ -397,7 +413,7 @@ let rec t_def env def = (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [inst]) $ def.at, []) | TypD (id, params, [inst]) -> let relation = create_well_formed_predicate env id inst in - (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [t_inst env inst]) $ def.at, Option.to_list relation) + (TypD (id, List.map (transform_param tf) params |> List.filter is_type_param, [t_inst env inst]) $ def.at, relation) | TypD (_, _, _) -> error def.at "Multiples instances encountered, please run type family removal pass first." | RelD (id, m, typ, rules) -> @@ -423,6 +439,7 @@ let rec t_def env def = | HintD hintdef -> (HintD hintdef $ def.at, []) let has_proj_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.projection_hint_id +let has_tf_hint (hint : hint) = hint.hintid.it = Typefamilyremoval.type_family_hint_id let create_proj_map_def set (d : def) = match d.it with @@ -433,12 +450,24 @@ let create_proj_map_def set (d : def) = ) | _ -> () +let create_tf_set_def set (d : def) = + match d.it with + | HintD {it = TypH (id, hints); _} -> + (match (List.find_opt has_tf_hint hints) with + | Some _ -> set := StringSet.add id.it !set + | _ -> () + ) + | _ -> () + let transform (il : script): script = let env = empty () in env.il_env <- Il.Env.env_of_script il; let proj_set = ref StringSet.empty in + let tf_set = ref StringSet.empty in List.iter (create_proj_map_def proj_set) il; + List.iter (create_tf_set_def tf_set) il; env.proj_set <- !proj_set; + env.tf_set <- !tf_set; List.concat_map (fun d -> let (t_d, wf_relations) = t_def env d in t_d :: wf_relations diff --git a/spectec/src/middlend/undep.mli b/spectec/src/middlend/undep.mli index 64d020ff9d..e66a2603e0 100644 --- a/spectec/src/middlend/undep.mli +++ b/spectec/src/middlend/undep.mli @@ -1 +1,2 @@ +val wf_hint_id : string val transform : Il.Ast.script -> Il.Ast.script \ No newline at end of file diff --git a/spectec/src/middlend/utils.ml b/spectec/src/middlend/utils.ml index 9627691fbc..cfbfba83c7 100644 --- a/spectec/src/middlend/utils.ml +++ b/spectec/src/middlend/utils.ml @@ -31,6 +31,13 @@ and reduce_inst_alias env args inst base_typ = ) | _ -> base_typ +let is_part_of_bind (free_set : Free.sets) b = + match b.it with + | ExpB (id, _) -> Free.Set.mem id.it free_set.varid + | TypB id -> Free.Set.mem id.it free_set.typid + | DefB (id, _, _) -> Free.Set.mem id.it free_set.defid + | GramB (id, _, _) -> Free.Set.mem id.it free_set.gramid + let generate_var ids id = let start = 0 in let fresh_prefix = "var" in diff --git a/spectec/test-lean4/Makefile b/spectec/test-lean4/Makefile new file mode 100644 index 0000000000..79be8c5f62 --- /dev/null +++ b/spectec/test-lean4/Makefile @@ -0,0 +1,36 @@ +# Configuration + +NAME = spectec +EXE = $(PWD)/../$(NAME) +EXT = $(NAME) +LOG = _log + +# Main targets + +.PHONY: all + +all: test + + +# Test + +.PHONY: test + +test: + +# Executable + +$(EXE): exe + +exe: + @(cd ..; make exe) + + +# Cleanup + +.PHONY: clean distclean + +clean: + rm -f $(LOG) + +distclean: clean diff --git a/spectec/test-lean4/Wasm.lean b/spectec/test-lean4/Wasm.lean new file mode 100644 index 0000000000..da6a5a49be --- /dev/null +++ b/spectec/test-lean4/Wasm.lean @@ -0,0 +1,10791 @@ +/- Preamble -/ +set_option linter.unusedVariables false +set_option match.ignoreUnusedAlts true + +instance : Append (Option a) where + append := fun o1 o2 => match o1 with | none => o2 | _ => o1 + +def Forall (R : α → Prop) (xs : List α) : Prop := + ∀ x ∈ xs, R x +def Forall₂ (R : α → β → Prop) (xs : List α) (ys : List β) : Prop := + ∀ x y, (x,y) ∈ List.zip xs ys → R x y +def Forall₃ (R : α → β → γ → Prop) (xs : List α) (ys : List β) (zs : List γ) : Prop := + ∀ x y z, (x,y,z) ∈ List.zip xs (List.zip ys zs) → R x y z + +macro "opaqueDef" : term => `(by first | exact Inhabited.default | intros; assumption) + +/- written manually due to `BEq` constraint -/ +def disjoint_ (X : Type) [BEq X] : ∀ (var_0 : (List X)), Bool + | [] => true + | (w :: w'_lst) => ((!(List.contains w'_lst w)) && (disjoint_ X w'_lst)) + +/- written manually due to `BEq` constraint -/ +def setminus_ (X : Type) [BEq X] (l1 l2 : List X) : List X := + l1.filter (fun x => !(List.contains l2 x)) +/- Generated Code -/ + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/0.1-aux.vars.spectec:5.1-5.32 -/ +abbrev N : Type := Nat + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/0.1-aux.vars.spectec:6.1-6.32 -/ +abbrev M : Type := Nat + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/0.1-aux.vars.spectec:7.1-7.32 -/ +abbrev K : Type := Nat + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/0.1-aux.vars.spectec:8.1-8.32 -/ +abbrev n : Type := Nat + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/0.1-aux.vars.spectec:9.1-9.32 -/ +abbrev m : Type := Nat + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.2-aux.num.spectec:5.1-5.25 -/ +def min : ∀ (nat : Nat) (nat_0 : Nat) , Nat + | i, j => + (if (i <= j) then i else j) + + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 -/ +inductive fun_sum : (List Nat) -> Nat -> Prop where + | fun_sum_case_0 : fun_sum [] 0 + | fun_sum_case_1 : forall (v_n : Nat) (n'_lst : (List n)) (var_0 : Nat), + (fun_sum n'_lst var_0) -> + fun_sum ([v_n] ++ n'_lst) (v_n + var_0) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 -/ +inductive fun_prod : (List Nat) -> Nat -> Prop where + | fun_prod_case_0 : fun_prod [] 1 + | fun_prod_case_1 : forall (v_n : Nat) (n'_lst : (List n)) (var_0 : Nat), + (fun_prod n'_lst var_0) -> + fun_prod ([v_n] ++ n'_lst) (v_n * var_0) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:7.1-7.44 -/ +def opt_ : ∀ (X : Type) (var_0 : (List X)) , (Option X) + | X, [] => + none + | X, [w] => + (some w) + + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 -/ +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 -/ +def concat_ : ∀ (X : Type) (var_0 : (List (List X))) , (List X) + | X, [] => + [] + | X, (w_lst :: w'_lst_lst) => + (w_lst ++ (concat_ X w'_lst_lst)) + + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 -/ +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 -/ +def concatn_ : ∀ (X : Type) (var_0 : (List (List X))) (nat : Nat) , (List X) + | X, [], v_n => + [] + | X, (w_lst :: w'_lst_lst), v_n => + (w_lst ++ (concatn_ X w'_lst_lst v_n)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:22.1-22.58 -/ +def concatopt_ : ∀ (X : Type) (var_0 : (List (Option X))) , (List X) + | X, [] => + [] + | X, (w_opt :: w'_opt_lst) => + ((Option.toList w_opt) ++ (concat_ X (List.map (fun (w'_opt : (Option X)) => (Option.toList w'_opt)) w'_opt_lst))) + + +/- Axiom Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:26.1-26.39 -/ +opaque inv_concat_ : forall (X : Type) (var_0 : (List X)), (List (List X)) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:29.1-29.45 -/ +opaque inv_concatn_ : forall (X : Type) (nat : Nat) (var_0 : (List X)), (List (List X)) := opaqueDef + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 -/ +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 -/ +/- elided, builtin -/ + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 -/ +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 -/ +/- elided, builtin -/ + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 -/ +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 -/ +/- elided, builtin -/ + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 -/ +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 -/ +def setproduct2_ : ∀ (X : Type) (X_0 : X) (var_0 : (List (List X))) , (List (List X)) + | X, w_1, [] => + [] + | X, w_1, (w'_lst :: w_lst_lst) => + ([([w_1] ++ w'_lst)] ++ (setproduct2_ X w_1 w_lst_lst)) + + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 -/ +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 -/ +def setproduct1_ : ∀ (X : Type) (var_0 : (List X)) (var_1 : (List (List X))) , (List (List X)) + | X, [], w_lst_lst => + [] + | X, (w_1 :: w'_lst), w_lst_lst => + ((setproduct2_ X w_1 w_lst_lst) ++ (setproduct1_ X w'_lst w_lst_lst)) + + +/- Recursive Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 -/ +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 -/ +def setproduct_ : ∀ (X : Type) (var_0 : (List (List X))) , (List (List X)) + | X, [] => + [[]] + | X, (w_1_lst :: w_lst_lst) => + (setproduct1_ X w_1_lst (setproduct_ X w_lst_lst)) + + +/- Axiom Definition at: ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec:5.1-5.29 -/ +opaque ND : Bool := opaqueDef + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:7.1-7.37 -/ +inductive bit : Type where + | mk_bit (i : Nat) : bit +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:7.8-7.11 -/ +inductive wf_bit : bit -> Prop where + | bit_case_0 : forall (i : Nat), + ((i == 0) || (i == 1)) -> + wf_bit (.mk_bit i) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:8.1-8.50 -/ +inductive byte : Type where + | mk_byte (i : Nat) : byte +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:8.1-8.50 -/ +def proj_byte_0 : ∀ (x : byte) , Nat + | (.mk_byte v_num_0) => + (v_num_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:8.8-8.12 -/ +inductive wf_byte : byte -> Prop where + | byte_case_0 : forall (i : Nat), + ((i >= 0) && (i <= 255)) -> + wf_byte (.mk_byte i) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:10.1-11.25 -/ +inductive uN : Type where + | mk_uN (i : Nat) : uN +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:10.1-11.25 -/ +def proj_uN_0 : ∀ (x : uN) , Nat + | (.mk_uN v_num_0) => + (v_num_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:10.8-10.11 -/ +inductive wf_uN : N -> uN -> Prop where + | uN_case_0 : forall (v_N : N) (i : Nat), + ((i >= 0) && (i <= ((((2 ^ v_N) : Nat) - (1 : Nat)) : Nat))) -> + wf_uN v_N (.mk_uN i) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:12.1-13.50 -/ +inductive sN : Type where + | mk_sN (i : Nat) : sN +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:12.1-13.50 -/ +def proj_sN_0 : ∀ (x : sN) , Nat + | (.mk_sN v_num_0) => + (v_num_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:12.8-12.11 -/ +inductive wf_sN : N -> sN -> Prop where + | sN_case_0 : forall (v_N : N) (i : Nat), + ((((i >= (0 - ((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat))) && (i <= (0 - (1 : Nat)))) || (i == (0 : Nat))) || ((i >= ((1 : Nat))) && (i <= ((((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat)) - (1 : Nat))))) -> + wf_sN v_N (.mk_sN i) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:14.1-15.8 -/ +abbrev iN : Type := uN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:17.1-17.20 -/ +abbrev u8 : Type := uN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:18.1-18.21 -/ +abbrev u16 : Type := uN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:19.1-19.21 -/ +abbrev u31 : Type := uN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:20.1-20.21 -/ +abbrev u32 : Type := uN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:21.1-21.21 -/ +abbrev u64 : Type := uN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:22.1-22.21 -/ +abbrev s33 : Type := sN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:23.1-23.21 -/ +abbrev i32 : Type := iN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:24.1-24.21 -/ +abbrev i64 : Type := iN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:25.1-25.23 -/ +abbrev i128 : Type := iN + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:32.1-32.21 -/ +def signif : ∀ (v_N : N) , Nat + | 32 => + 23 + | 64 => + 52 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:36.1-36.20 -/ +def expon : ∀ (v_N : N) , Nat + | 32 => + 8 + | 64 => + 11 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:40.1-40.47 -/ +def fun_M : ∀ (v_N : N) , Nat + | v_N => + (signif v_N) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:43.1-43.47 -/ +def E : ∀ (v_N : N) , Nat + | v_N => + (expon v_N) + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:50.1-50.47 -/ +abbrev exp : Type := Nat + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:51.1-55.84 -/ +inductive fNmag : Type where + | NORM (v_m : m) (v_exp : exp) : fNmag + | SUBNORM (v_m : m) : fNmag + | INF : fNmag + | NAN (v_m : m) : fNmag +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:51.8-51.14 -/ +inductive wf_fNmag : N -> fNmag -> Prop where + | fNmag_case_0 : forall (v_N : N) (v_m : m) (v_exp : exp), + ((v_m < (2 ^ (fun_M v_N))) && ((((2 : Nat) - ((2 ^ ((((E v_N) : Nat) - (1 : Nat)) : Nat)) : Nat)) <= v_exp) && (v_exp <= (((2 ^ ((((E v_N) : Nat) - (1 : Nat)) : Nat)) : Nat) - (1 : Nat))))) -> + wf_fNmag v_N (.NORM v_m v_exp) + | fNmag_case_1 : forall (v_N : N) (v_m : m) (v_exp : exp), + ((v_m < (2 ^ (fun_M v_N))) && (((2 : Nat) - ((2 ^ ((((E v_N) : Nat) - (1 : Nat)) : Nat)) : Nat)) == v_exp)) -> + wf_fNmag v_N (.SUBNORM v_m) + | fNmag_case_2 : forall (v_N : N), wf_fNmag v_N .INF + | fNmag_case_3 : forall (v_N : N) (v_m : m), + ((1 <= v_m) && (v_m < (2 ^ (fun_M v_N)))) -> + wf_fNmag v_N (.NAN v_m) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:46.1-48.35 -/ +inductive fN : Type where + | POS (v_fNmag : fNmag) : fN + | NEG (v_fNmag : fNmag) : fN +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:46.8-46.11 -/ +inductive wf_fN : N -> fN -> Prop where + | fN_case_0 : forall (v_N : N) (v_fNmag : fNmag), + (wf_fNmag v_N v_fNmag) -> + wf_fN v_N (.POS v_fNmag) + | fN_case_1 : forall (v_N : N) (v_fNmag : fNmag), + (wf_fNmag v_N v_fNmag) -> + wf_fN v_N (.NEG v_fNmag) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:57.1-57.21 -/ +abbrev f32 : Type := fN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:58.1-58.21 -/ +abbrev f64 : Type := fN + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:60.1-60.39 -/ +def fzero : ∀ (v_N : N) , fN + | v_N => + (.POS (.SUBNORM 0)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:63.1-63.44 -/ +def fnat : ∀ (v_N : N) (nat : Nat) , fN + | v_N, v_n => + (.POS (.NORM v_n (0 : Nat))) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:66.1-66.39 -/ +def fone : ∀ (v_N : N) , fN + | v_N => + (.POS (.NORM 1 (0 : Nat))) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:69.1-69.21 -/ +def canon_ : ∀ (v_N : N) , Nat + | v_N => + (2 ^ ((((signif v_N) : Nat) - (1 : Nat)) : Nat)) + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:75.1-76.8 -/ +abbrev vN : Type := uN + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:78.1-78.23 -/ +abbrev v128 : Type := vN + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:84.1-84.49 -/ +inductive list (X : Type 0) : Type where + | mk_list (X_lst : (List X)) : list X +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:84.1-84.49 -/ +def proj_list_0 : ∀ (X : Type) (x : (list X)) , (List X) + | X, (.mk_list v_X_list_0) => + (v_X_list_0) + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.1-89.85 -/ +inductive char : Type where + | mk_char (i : Nat) : char +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.1-89.85 -/ +def proj_char_0 : ∀ (x : char) , Nat + | (.mk_char v_num_0) => + (v_num_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.8-89.12 -/ +inductive wf_char : char -> Prop where + | char_case_0 : forall (i : Nat), + (((i >= 0) && (i <= 55295)) || ((i >= 57344) && (i <= 1114111))) -> + wf_char (.mk_char i) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.6-48.11 -/ +inductive fun_cont : byte -> Nat -> Prop where + | fun_cont_case_0 : forall (b : byte), + ((128 < (proj_byte_0 b)) && ((proj_byte_0 b) < 192)) -> + fun_cont b ((((proj_byte_0 b) : Nat) - (128 : Nat)) : Nat) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.6-91.11 -/ +inductive fun_utf8 : (List char) -> (List byte) -> Prop where + | fun_utf8_case_0 : forall (ch_lst : (List char)) (var_0_lst : (List (List byte))), + ((List.length var_0_lst) == (List.length ch_lst)) -> + Forall₂ (fun (var_0 : (List byte)) (ch : char) => (fun_utf8 [ch] var_0)) var_0_lst ch_lst -> + fun_utf8 ch_lst (concat_ byte var_0_lst) + | fun_utf8_case_1 : forall (ch : char) (b : byte), + ((proj_char_0 ch) < 128) -> + ((.mk_byte (proj_char_0 ch)) == b) -> + fun_utf8 [ch] [b] + | fun_utf8_case_2 : forall (ch : char) (b_1 : byte) (b_2 : byte) (var_0 : Nat), + (fun_cont b_2 var_0) -> + ((128 <= (proj_char_0 ch)) && ((proj_char_0 ch) < 2048)) -> + ((proj_char_0 ch) == (((2 ^ 6) * ((((proj_byte_0 b_1) : Nat) - (192 : Nat)) : Nat)) + var_0)) -> + fun_utf8 [ch] [b_1, b_2] + | fun_utf8_case_3 : forall (ch : char) (b_1 : byte) (b_2 : byte) (b_3 : byte) (var_1 : Nat) (var_0 : Nat), + (fun_cont b_3 var_1) -> + (fun_cont b_2 var_0) -> + (((2048 <= (proj_char_0 ch)) && ((proj_char_0 ch) < 55296)) || ((57344 <= (proj_char_0 ch)) && ((proj_char_0 ch) < 65536))) -> + ((proj_char_0 ch) == ((((2 ^ 12) * ((((proj_byte_0 b_1) : Nat) - (224 : Nat)) : Nat)) + ((2 ^ 6) * var_0)) + var_1)) -> + fun_utf8 [ch] [b_1, b_2, b_3] + | fun_utf8_case_4 : forall (ch : char) (b_1 : byte) (b_2 : byte) (b_3 : byte) (b_4 : byte) (var_2 : Nat) (var_1 : Nat) (var_0 : Nat), + (fun_cont b_4 var_2) -> + (fun_cont b_3 var_1) -> + (fun_cont b_2 var_0) -> + ((65536 <= (proj_char_0 ch)) && ((proj_char_0 ch) < 69632)) -> + ((proj_char_0 ch) == (((((2 ^ 18) * ((((proj_byte_0 b_1) : Nat) - (240 : Nat)) : Nat)) + ((2 ^ 12) * var_0)) + ((2 ^ 6) * var_1)) + var_2)) -> + fun_utf8 [ch] [b_1, b_2, b_3, b_4] + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:93.1-93.70 -/ +inductive name : Type where + | mk_name (char_lst : (List char)) : name +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:93.1-93.70 -/ +def proj_name_0 : ∀ (x : name) , (List char) + | (.mk_name v_char_list_0) => + (v_char_list_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:93.8-93.12 -/ +inductive wf_name : name -> Prop where + | name_case_0 : forall (char_lst : (List char)) (var_0 : (List byte)), + (fun_utf8 char_lst var_0) -> + Forall (fun (v_char : char) => (wf_char v_char)) char_lst -> + ((List.length var_0) < (2 ^ 32)) -> + wf_name (.mk_name char_lst) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:100.1-100.36 -/ +abbrev idx : Type := u32 + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:101.1-101.44 -/ +abbrev laneidx : Type := u8 + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:103.1-103.45 -/ +abbrev typeidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:104.1-104.49 -/ +abbrev funcidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:105.1-105.49 -/ +abbrev globalidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:106.1-106.47 -/ +abbrev tableidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:107.1-107.46 -/ +abbrev memidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:108.1-108.43 -/ +abbrev tagidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:109.1-109.45 -/ +abbrev elemidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:110.1-110.45 -/ +abbrev dataidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:111.1-111.47 -/ +abbrev labelidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:112.1-112.47 -/ +abbrev localidx : Type := idx + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:113.1-113.47 -/ +abbrev fieldidx : Type := idx + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:115.1-116.79 -/ +inductive externidx : Type where + | FUNC (v_funcidx : funcidx) : externidx + | GLOBAL (v_globalidx : globalidx) : externidx + | TABLE (v_tableidx : tableidx) : externidx + | MEM (v_memidx : memidx) : externidx + | TAG (v_tagidx : tagidx) : externidx +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:115.8-115.17 -/ +inductive wf_externidx : externidx -> Prop where + | externidx_case_0 : forall (v_funcidx : funcidx), + (wf_uN 32 v_funcidx) -> + wf_externidx (.FUNC v_funcidx) + | externidx_case_1 : forall (v_globalidx : globalidx), + (wf_uN 32 v_globalidx) -> + wf_externidx (.GLOBAL v_globalidx) + | externidx_case_2 : forall (v_tableidx : tableidx), + (wf_uN 32 v_tableidx) -> + wf_externidx (.TABLE v_tableidx) + | externidx_case_3 : forall (v_memidx : memidx), + (wf_uN 32 v_memidx) -> + wf_externidx (.MEM v_memidx) + | externidx_case_4 : forall (v_tagidx : tagidx), + (wf_uN 32 v_tagidx) -> + wf_externidx (.TAG v_tagidx) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 -/ +inductive fun_funcsxx : (List externidx) -> (List typeidx) -> Prop where + | fun_funcsxx_case_0 : fun_funcsxx [] [] + | fun_funcsxx_case_1 : forall (x : uN) (xx_lst : (List externidx)) (var_0 : (List typeidx)), + (fun_funcsxx xx_lst var_0) -> + fun_funcsxx ([(.FUNC x)] ++ xx_lst) ([x] ++ var_0) + | fun_funcsxx_case_2 : forall (v_externidx : externidx) (xx_lst : (List externidx)) (var_0 : (List typeidx)), + (fun_funcsxx xx_lst var_0) -> + fun_funcsxx ([v_externidx] ++ xx_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 -/ +inductive fun_globalsxx : (List externidx) -> (List globalidx) -> Prop where + | fun_globalsxx_case_0 : fun_globalsxx [] [] + | fun_globalsxx_case_1 : forall (x : uN) (xx_lst : (List externidx)) (var_0 : (List globalidx)), + (fun_globalsxx xx_lst var_0) -> + fun_globalsxx ([(.GLOBAL x)] ++ xx_lst) ([x] ++ var_0) + | fun_globalsxx_case_2 : forall (v_externidx : externidx) (xx_lst : (List externidx)) (var_0 : (List globalidx)), + (fun_globalsxx xx_lst var_0) -> + fun_globalsxx ([v_externidx] ++ xx_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 -/ +inductive fun_tablesxx : (List externidx) -> (List tableidx) -> Prop where + | fun_tablesxx_case_0 : fun_tablesxx [] [] + | fun_tablesxx_case_1 : forall (x : uN) (xx_lst : (List externidx)) (var_0 : (List tableidx)), + (fun_tablesxx xx_lst var_0) -> + fun_tablesxx ([(.TABLE x)] ++ xx_lst) ([x] ++ var_0) + | fun_tablesxx_case_2 : forall (v_externidx : externidx) (xx_lst : (List externidx)) (var_0 : (List tableidx)), + (fun_tablesxx xx_lst var_0) -> + fun_tablesxx ([v_externidx] ++ xx_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 -/ +inductive fun_memsxx : (List externidx) -> (List memidx) -> Prop where + | fun_memsxx_case_0 : fun_memsxx [] [] + | fun_memsxx_case_1 : forall (x : uN) (xx_lst : (List externidx)) (var_0 : (List memidx)), + (fun_memsxx xx_lst var_0) -> + fun_memsxx ([(.MEM x)] ++ xx_lst) ([x] ++ var_0) + | fun_memsxx_case_2 : forall (v_externidx : externidx) (xx_lst : (List externidx)) (var_0 : (List memidx)), + (fun_memsxx xx_lst var_0) -> + fun_memsxx ([v_externidx] ++ xx_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 -/ +inductive fun_tagsxx : (List externidx) -> (List tagidx) -> Prop where + | fun_tagsxx_case_0 : fun_tagsxx [] [] + | fun_tagsxx_case_1 : forall (x : uN) (xx_lst : (List externidx)) (var_0 : (List tagidx)), + (fun_tagsxx xx_lst var_0) -> + fun_tagsxx ([(.TAG x)] ++ xx_lst) ([x] ++ var_0) + | fun_tagsxx_case_2 : forall (v_externidx : externidx) (xx_lst : (List externidx)) (var_0 : (List tagidx)), + (fun_tagsxx xx_lst var_0) -> + fun_tagsxx ([v_externidx] ++ xx_lst) var_0 + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:158.1-168.4 -/ +structure free where MKfree :: + TYPES : (List typeidx) + FUNCS : (List funcidx) + GLOBALS : (List globalidx) + TABLES : (List tableidx) + MEMS : (List memidx) + ELEMS : (List elemidx) + DATAS : (List dataidx) + LOCALS : (List localidx) + LABELS : (List labelidx) +deriving Inhabited, BEq + +def _append_free (arg1 arg2 : (free)) : free where + TYPES := arg1.TYPES ++ arg2.TYPES + FUNCS := arg1.FUNCS ++ arg2.FUNCS + GLOBALS := arg1.GLOBALS ++ arg2.GLOBALS + TABLES := arg1.TABLES ++ arg2.TABLES + MEMS := arg1.MEMS ++ arg2.MEMS + ELEMS := arg1.ELEMS ++ arg2.ELEMS + DATAS := arg1.DATAS ++ arg2.DATAS + LOCALS := arg1.LOCALS ++ arg2.LOCALS + LABELS := arg1.LABELS ++ arg2.LABELS +instance : Append free where + append arg1 arg2 := _append_free arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:158.8-158.12 -/ +inductive wf_free : free -> Prop where + | free_case_ : forall (var_0 : (List typeidx)) (var_1 : (List funcidx)) (var_2 : (List globalidx)) (var_3 : (List tableidx)) (var_4 : (List memidx)) (var_5 : (List elemidx)) (var_6 : (List dataidx)) (var_7 : (List localidx)) (var_8 : (List labelidx)), + Forall (fun (var_0 : typeidx) => (wf_uN 32 var_0)) var_0 -> + Forall (fun (var_1 : funcidx) => (wf_uN 32 var_1)) var_1 -> + Forall (fun (var_2 : globalidx) => (wf_uN 32 var_2)) var_2 -> + Forall (fun (var_3 : tableidx) => (wf_uN 32 var_3)) var_3 -> + Forall (fun (var_4 : memidx) => (wf_uN 32 var_4)) var_4 -> + Forall (fun (var_5 : elemidx) => (wf_uN 32 var_5)) var_5 -> + Forall (fun (var_6 : dataidx) => (wf_uN 32 var_6)) var_6 -> + Forall (fun (var_7 : localidx) => (wf_uN 32 var_7)) var_7 -> + Forall (fun (var_8 : labelidx) => (wf_uN 32 var_8)) var_8 -> + wf_free { TYPES := var_0, FUNCS := var_1, GLOBALS := var_2, TABLES := var_3, MEMS := var_4, ELEMS := var_5, DATAS := var_6, LOCALS := var_7, LABELS := var_8 } + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:171.1-171.28 -/ +def free_opt : ∀ (var_0 : (Option free)) , free + | none => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | (some v_free) => + v_free + + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.1-172.29 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 -/ +inductive fun_free_list : (List free) -> free -> Prop where + | fun_free_list_case_0 : fun_free_list [] { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_list_case_1 : forall (v_free : free) (free'_lst : (List free)) (var_0 : free), + (fun_free_list free'_lst var_0) -> + fun_free_list ([v_free] ++ free'_lst) (v_free ++ var_0) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:181.1-181.34 -/ +def free_typeidx : ∀ (v_typeidx : typeidx) , free + | v_typeidx => + { TYPES := [v_typeidx], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:182.1-182.34 -/ +def free_funcidx : ∀ (v_funcidx : funcidx) , free + | v_funcidx => + { TYPES := [], FUNCS := [v_funcidx], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:183.1-183.38 -/ +def free_globalidx : ∀ (v_globalidx : globalidx) , free + | v_globalidx => + { TYPES := [], FUNCS := [], GLOBALS := [v_globalidx], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:184.1-184.36 -/ +def free_tableidx : ∀ (v_tableidx : tableidx) , free + | v_tableidx => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [v_tableidx], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:185.1-185.32 -/ +def free_memidx : ∀ (v_memidx : memidx) , free + | v_memidx => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [v_memidx], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:186.1-186.34 -/ +def free_elemidx : ∀ (v_elemidx : elemidx) , free + | v_elemidx => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [v_elemidx], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:187.1-187.34 -/ +def free_dataidx : ∀ (v_dataidx : dataidx) , free + | v_dataidx => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [v_dataidx], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:188.1-188.36 -/ +def free_localidx : ∀ (v_localidx : localidx) , free + | v_localidx => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [v_localidx], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:189.1-189.36 -/ +def free_labelidx : ∀ (v_labelidx : labelidx) , free + | v_labelidx => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [v_labelidx] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:190.1-190.38 -/ +def free_externidx : ∀ (v_externidx : externidx) , free + | (.FUNC v_funcidx) => + (free_funcidx v_funcidx) + | (.GLOBAL v_globalidx) => + (free_globalidx v_globalidx) + | (.TABLE v_tableidx) => + (free_tableidx v_tableidx) + | (.MEM v_memidx) => + (free_memidx v_memidx) + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:8.1-8.55 -/ +inductive null : Type where + | NULL : null +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:10.1-11.14 -/ +inductive addrtype : Type where + | I32 : addrtype + | I64 : addrtype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:13.1-14.26 -/ +inductive numtype : Type where + | I32 : numtype + | I64 : numtype + | F32 : numtype + | F64 : numtype +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def numtype_addrtype : ∀ (var_0 : addrtype) , numtype + | .I32 => + .I32 + | .I64 => + .I64 + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:16.1-17.9 -/ +inductive vectype : Type where + | V128 : vectype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:19.1-20.22 -/ +inductive consttype : Type where + | I32 : consttype + | I64 : consttype + | F32 : consttype + | F64 : consttype + | V128 : consttype +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def consttype_numtype : ∀ (var_0 : numtype) , consttype + | .I32 => + .I32 + | .I64 => + .I64 + | .F32 => + .F32 + | .F64 => + .F64 + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:28.1-29.14 -/ +inductive absheaptype : Type where + | ANY : absheaptype + | EQ : absheaptype + | I31 : absheaptype + | STRUCT : absheaptype + | ARRAY : absheaptype + | NONE : absheaptype + | FUNC : absheaptype + | NOFUNC : absheaptype + | EXN : absheaptype + | NOEXN : absheaptype + | EXTERN : absheaptype + | NOEXTERN : absheaptype + | BOT : absheaptype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:109.1-109.54 -/ +inductive «mut» : Type where + | MUT : «mut» +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:110.1-110.60 -/ +inductive final : Type where + | FINAL : final +deriving Inhabited, BEq + + +/- Recursive Definitions at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-123.22 -/ +mutual +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 -/ +inductive typeuse : Type where + | _IDX (v_typeidx : typeidx) : typeuse + | _DEF (v_rectype : rectype) (v_n : n) : typeuse + | REC (v_n : n) : typeuse +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 -/ +inductive heaptype : Type where + | ANY : heaptype + | EQ : heaptype + | I31 : heaptype + | STRUCT : heaptype + | ARRAY : heaptype + | NONE : heaptype + | FUNC : heaptype + | NOFUNC : heaptype + | EXN : heaptype + | NOEXN : heaptype + | EXTERN : heaptype + | NOEXTERN : heaptype + | BOT : heaptype + | _IDX (v_typeidx : typeidx) : heaptype + | REC (v_n : n) : heaptype + | _DEF (v_rectype : rectype) (v_n : n) : heaptype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 -/ +inductive valtype : Type where + | I32 : valtype + | I64 : valtype + | F32 : valtype + | F64 : valtype + | V128 : valtype + | REF (null_opt : (Option null)) (v_heaptype : heaptype) : valtype + | BOT : valtype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 -/ +inductive storagetype : Type where + | BOT : storagetype + | I32 : storagetype + | I64 : storagetype + | F32 : storagetype + | F64 : storagetype + | V128 : storagetype + | REF (null_opt : (Option null)) (v_heaptype : heaptype) : storagetype + | I8 : storagetype + | I16 : storagetype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 -/ +inductive fieldtype : Type where + | mk_fieldtype (mut_opt : (Option «mut»)) (v_storagetype : storagetype) : fieldtype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 -/ +inductive comptype : Type where + | STRUCT (v_list : (list fieldtype)) : comptype + | ARRAY (v_fieldtype : fieldtype) : comptype + | FUNC (v_resulttype : (list valtype)) (_ : (list valtype)) : comptype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 -/ +inductive subtype : Type where + | SUB (final_opt : (Option final)) (typeuse_lst : (List typeuse)) (v_comptype : comptype) : subtype +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 -/ +inductive rectype : Type where + | REC (v_list : (list subtype)) : rectype +deriving Inhabited, BEq + + +end + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 -/ +abbrev resulttype : Type := (list valtype) + +/- Auxiliary Definition at: -/ +def heaptype_absheaptype : ∀ (var_0 : absheaptype) , heaptype + | .ANY => + .ANY + | .EQ => + .EQ + | .I31 => + .I31 + | .STRUCT => + .STRUCT + | .ARRAY => + .ARRAY + | .NONE => + .NONE + | .FUNC => + .FUNC + | .NOFUNC => + .NOFUNC + | .EXN => + .EXN + | .NOEXN => + .NOEXN + | .EXTERN => + .EXTERN + | .NOEXTERN => + .NOEXTERN + | .BOT => + .BOT + + +/- Auxiliary Definition at: -/ +def valtype_addrtype : ∀ (var_0 : addrtype) , valtype + | .I32 => + .I32 + | .I64 => + .I64 + + +/- Auxiliary Definition at: -/ +def storagetype_consttype : ∀ (var_0 : consttype) , storagetype + | .I32 => + .I32 + | .I64 => + .I64 + | .F32 => + .F32 + | .F64 => + .F64 + | .V128 => + .V128 + + +/- Auxiliary Definition at: -/ +def storagetype_numtype : ∀ (var_0 : numtype) , storagetype + | .I32 => + .I32 + | .I64 => + .I64 + | .F32 => + .F32 + | .F64 => + .F64 + + +/- Auxiliary Definition at: -/ +def valtype_numtype : ∀ (var_0 : numtype) , valtype + | .I32 => + .I32 + | .I64 => + .I64 + | .F32 => + .F32 + | .F64 => + .F64 + + +/- Auxiliary Definition at: -/ +def heaptype_typeuse : ∀ (var_0 : typeuse) , heaptype + | (._IDX x0) => + (._IDX x0) + | (._DEF x0 x1) => + (._DEF x0 x1) + | (.REC x0) => + (.REC x0) + + +/- Auxiliary Definition at: -/ +def storagetype_valtype : ∀ (var_0 : valtype) , storagetype + | .I32 => + .I32 + | .I64 => + .I64 + | .F32 => + .F32 + | .F64 => + .F64 + | .V128 => + .V128 + | (.REF x0 x1) => + (.REF x0 x1) + | .BOT => + .BOT + + +/- Auxiliary Definition at: -/ +def storagetype_vectype : ∀ (var_0 : vectype) , storagetype + | .V128 => + .V128 + + +/- Auxiliary Definition at: -/ +def valtype_vectype : ∀ (var_0 : vectype) , valtype + | .V128 => + .V128 + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:32.1-33.34 -/ +inductive deftype : Type where + | _DEF (v_rectype : rectype) (v_n : n) : deftype +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def heaptype_deftype : ∀ (var_0 : deftype) , heaptype + | (._DEF x0 x1) => + (._DEF x0 x1) + + +/- Auxiliary Definition at: -/ +def typeuse_deftype : ∀ (var_0 : deftype) , typeuse + | (._DEF x0 x1) => + (._DEF x0 x1) + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:40.1-41.42 -/ +inductive typevar : Type where + | _IDX (v_typeidx : typeidx) : typevar + | REC (v_n : n) : typevar +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def typeuse_typevar : ∀ (var_0 : typevar) , typeuse + | (._IDX x0) => + (._IDX x0) + | (.REC x0) => + (.REC x0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:40.8-40.15 -/ +inductive wf_typevar : typevar -> Prop where + | typevar_case_0 : forall (v_typeidx : typeidx), + (wf_uN 32 v_typeidx) -> + wf_typevar (._IDX v_typeidx) + | typevar_case_1 : forall (v_n : n), wf_typevar (.REC v_n) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:46.1-47.23 -/ +inductive reftype : Type where + | REF (null_opt : (Option null)) (v_heaptype : heaptype) : reftype +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def storagetype_reftype : ∀ (var_0 : reftype) , storagetype + | (.REF x0 x1) => + (.REF x0 x1) + + +/- Auxiliary Definition at: -/ +def valtype_reftype : ∀ (var_0 : reftype) , valtype + | (.REF x0 x1) => + (.REF x0 x1) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:46.8-46.15 -/ +inductive wf_reftype : reftype -> Prop where + | reftype_case_0 : forall (null_opt : (Option null)) (v_heaptype : heaptype), + (wf_heaptype v_heaptype) -> + wf_reftype (.REF null_opt v_heaptype) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:55.1-55.55 -/ +abbrev Inn : Type := addrtype + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:56.1-56.56 -/ +inductive Fnn : Type where + | F32 : Fnn + | F64 : Fnn +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def numtype_Fnn : ∀ (var_0 : Fnn) , numtype + | .F32 => + .F32 + | .F64 => + .F64 + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:57.1-57.54 -/ +abbrev Vnn : Type := vectype + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:58.1-58.42 -/ +inductive Cnn : Type where + | I32 : Cnn + | I64 : Cnn + | F32 : Cnn + | F64 : Cnn + | V128 : Cnn +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:61.1-61.43 -/ +def ANYREF : reftype := (.REF (some .NULL) .ANY) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:62.1-62.42 -/ +def EQREF : reftype := (.REF (some .NULL) .EQ) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:63.1-63.43 -/ +def I31REF : reftype := (.REF (some .NULL) .I31) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:64.1-64.46 -/ +def STRUCTREF : reftype := (.REF (some .NULL) .STRUCT) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:65.1-65.45 -/ +def ARRAYREF : reftype := (.REF (some .NULL) .ARRAY) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:66.1-66.44 -/ +def FUNCREF : reftype := (.REF (some .NULL) .FUNC) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:67.1-67.43 -/ +def EXNREF : reftype := (.REF (some .NULL) .EXN) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:68.1-68.46 -/ +def EXTERNREF : reftype := (.REF (some .NULL) .EXTERN) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:69.1-69.44 -/ +def NULLREF : reftype := (.REF (some .NULL) .NONE) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:70.1-70.50 -/ +def NULLFUNCREF : reftype := (.REF (some .NULL) .NOFUNC) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:71.1-71.49 -/ +def NULLEXNREF : reftype := (.REF (some .NULL) .NOEXN) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:72.1-72.54 -/ +def NULLEXTERNREF : reftype := (.REF (some .NULL) .NOEXTERN) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:90.1-90.52 -/ +inductive packtype : Type where + | I8 : packtype + | I16 : packtype +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def storagetype_packtype : ∀ (var_0 : packtype) , storagetype + | .I8 => + .I8 + | .I16 => + .I16 + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:91.1-91.60 -/ +inductive lanetype : Type where + | I32 : lanetype + | I64 : lanetype + | F32 : lanetype + | F64 : lanetype + | I8 : lanetype + | I16 : lanetype +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def lanetype_Fnn : ∀ (var_0 : Fnn) , lanetype + | .F32 => + .F32 + | .F64 => + .F64 + + +/- Auxiliary Definition at: -/ +def lanetype_addrtype : ∀ (var_0 : addrtype) , lanetype + | .I32 => + .I32 + | .I64 => + .I64 + + +/- Auxiliary Definition at: -/ +def lanetype_numtype : ∀ (var_0 : numtype) , lanetype + | .I32 => + .I32 + | .I64 => + .I64 + | .F32 => + .F32 + | .F64 => + .F64 + + +/- Auxiliary Definition at: -/ +def lanetype_packtype : ∀ (var_0 : packtype) , lanetype + | .I8 => + .I8 + | .I16 => + .I16 + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:95.1-95.55 -/ +abbrev Pnn : Type := packtype + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:96.1-96.56 -/ +inductive Jnn : Type where + | I32 : Jnn + | I64 : Jnn + | I8 : Jnn + | I16 : Jnn +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def lanetype_Jnn : ∀ (var_0 : Jnn) , lanetype + | .I32 => + .I32 + | .I64 => + .I64 + | .I8 => + .I8 + | .I16 => + .I16 + + +/- Auxiliary Definition at: -/ +def Jnn_addrtype : ∀ (var_0 : addrtype) , Jnn + | .I32 => + .I32 + | .I64 => + .I64 + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:97.1-97.55 -/ +abbrev Lnn : Type := lanetype + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:128.1-128.74 -/ +inductive limits : Type where + | mk_limits (v_u64 : u64) (_ : (Option u64)) : limits +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:128.8-128.14 -/ +inductive wf_limits : limits -> Prop where + | limits_case_0 : forall (v_u64 : u64) (var_0 : (Option u64)), + (wf_uN 64 v_u64) -> + Forall (fun (var_0 : u64) => (wf_uN 64 var_0)) (Option.toList var_0) -> + wf_limits (.mk_limits v_u64 var_0) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:130.1-130.47 -/ +abbrev tagtype : Type := typeuse + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:131.1-131.58 -/ +inductive globaltype : Type where + | mk_globaltype (mut_opt : (Option «mut»)) (v_valtype : valtype) : globaltype +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:131.8-131.18 -/ +inductive wf_globaltype : globaltype -> Prop where + | globaltype_case_0 : forall (mut_opt : (Option «mut»)) (v_valtype : valtype), + (wf_valtype v_valtype) -> + wf_globaltype (.mk_globaltype mut_opt v_valtype) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:132.1-132.63 -/ +inductive memtype : Type where + | PAGE (v_addrtype : addrtype) (v_limits : limits) : memtype +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:132.8-132.15 -/ +inductive wf_memtype : memtype -> Prop where + | memtype_case_0 : forall (v_addrtype : addrtype) (v_limits : limits), + (wf_limits v_limits) -> + wf_memtype (.PAGE v_addrtype v_limits) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:133.1-133.67 -/ +inductive tabletype : Type where + | mk_tabletype (v_addrtype : addrtype) (v_limits : limits) (v_reftype : reftype) : tabletype +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:133.8-133.17 -/ +inductive wf_tabletype : tabletype -> Prop where + | tabletype_case_0 : forall (v_addrtype : addrtype) (v_limits : limits) (v_reftype : reftype), + (wf_limits v_limits) -> + (wf_reftype v_reftype) -> + wf_tabletype (.mk_tabletype v_addrtype v_limits v_reftype) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:134.1-134.64 -/ +inductive datatype : Type where + | OK : datatype +deriving Inhabited, BEq + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:135.1-135.52 -/ +abbrev elemtype : Type := reftype + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:137.1-138.83 -/ +inductive externtype : Type where + | TAG (v_tagtype : tagtype) : externtype + | GLOBAL (v_globaltype : globaltype) : externtype + | MEM (v_memtype : memtype) : externtype + | TABLE (v_tabletype : tabletype) : externtype + | FUNC (v_typeuse : typeuse) : externtype +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:137.8-137.18 -/ +inductive wf_externtype : externtype -> Prop where + | externtype_case_0 : forall (v_tagtype : tagtype), + (wf_typeuse v_tagtype) -> + wf_externtype (.TAG v_tagtype) + | externtype_case_1 : forall (v_globaltype : globaltype), + (wf_globaltype v_globaltype) -> + wf_externtype (.GLOBAL v_globaltype) + | externtype_case_2 : forall (v_memtype : memtype), + (wf_memtype v_memtype) -> + wf_externtype (.MEM v_memtype) + | externtype_case_3 : forall (v_tabletype : tabletype), + (wf_tabletype v_tabletype) -> + wf_externtype (.TABLE v_tabletype) + | externtype_case_4 : forall (v_typeuse : typeuse), + (wf_typeuse v_typeuse) -> + wf_externtype (.FUNC v_typeuse) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:140.1-141.47 -/ +inductive moduletype : Type where + | mk_moduletype (externtype_lst : (List externtype)) (_ : (List externtype)) : moduletype +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:140.8-140.18 -/ +inductive wf_moduletype : moduletype -> Prop where + | moduletype_case_0 : forall (externtype_lst : (List externtype)) (var_0 : (List externtype)), + Forall (fun (v_externtype : externtype) => (wf_externtype v_externtype)) externtype_lst -> + Forall (fun (var_0 : externtype) => (wf_externtype var_0)) var_0 -> + wf_moduletype (.mk_moduletype externtype_lst var_0) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:179.1-179.51 -/ +def IN : ∀ (v_N : N) , Inn + | 32 => + .I32 + | 64 => + .I64 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:183.1-183.51 -/ +def FN : ∀ (v_N : N) , Fnn + | 32 => + .F32 + | 64 => + .F64 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:187.1-187.51 -/ +def JN : ∀ (v_N : N) , Jnn + | 8 => + .I8 + | 16 => + .I16 + | 32 => + .I32 + | 64 => + .I64 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:196.1-196.46 -/ +def size : ∀ (v_numtype : numtype) , Nat + | .I32 => + 32 + | .I64 => + 64 + | .F32 => + 32 + | .F64 => + 64 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:197.1-197.46 -/ +def vsize : ∀ (v_vectype : vectype) , Nat + | .V128 => + 128 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:198.1-198.46 -/ +def psize : ∀ (v_packtype : packtype) , Nat + | .I8 => + 8 + | .I16 => + 16 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:199.1-199.46 -/ +def lsize : ∀ (v_lanetype : lanetype) , Nat + | .I32 => + (size .I32) + | .I64 => + (size .I64) + | .F32 => + (size .F32) + | .F64 => + (size .F64) + | .I8 => + (psize .I8) + | .I16 => + (psize .I16) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:200.1-200.46 -/ +def zsize : ∀ (v_storagetype : storagetype) , Nat + | .I32 => + (size .I32) + | .I64 => + (size .I64) + | .F32 => + (size .F32) + | .F64 => + (size .F64) + | .V128 => + (vsize .V128) + | .I8 => + (psize .I8) + | .I16 => + (psize .I16) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:201.1-201.71 -/ +def isize : ∀ (v_Inn : Inn) , Nat + | v_Inn => + (size (numtype_addrtype v_Inn)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:202.1-202.71 -/ +def jsize : ∀ (v_Jnn : Jnn) , Nat + | v_Jnn => + (lsize (lanetype_Jnn v_Jnn)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:203.1-203.71 -/ +def fsize : ∀ (v_Fnn : Fnn) , Nat + | v_Fnn => + (size (numtype_Fnn v_Fnn)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:226.1-226.40 -/ +def inv_isize : ∀ (nat : Nat) , (Option Inn) + | 32 => + (some .I32) + | 64 => + (some .I64) + | x0 => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:227.1-227.40 -/ +def inv_jsize : ∀ (nat : Nat) , (Option Jnn) + | 8 => + (some .I8) + | 16 => + (some .I16) + | v_n => + (some (Jnn_addrtype (Option.get! (inv_isize v_n)))) + | x0 => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:228.1-228.40 -/ +def inv_fsize : ∀ (nat : Nat) , (Option Fnn) + | 32 => + (some .F32) + | 64 => + (some .F64) + | x0 => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:239.1-239.63 -/ +def sizenn : ∀ (v_numtype : numtype) , Nat + | nt => + (size nt) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:240.1-240.63 -/ +def sizenn1 : ∀ (v_numtype : numtype) , Nat + | nt => + (size nt) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:241.1-241.63 -/ +def sizenn2 : ∀ (v_numtype : numtype) , Nat + | nt => + (size nt) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:246.1-246.63 -/ +def vsizenn : ∀ (v_vectype : vectype) , Nat + | vt => + (vsize vt) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:249.1-249.63 -/ +def psizenn : ∀ (v_packtype : packtype) , Nat + | pt => + (psize pt) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:252.1-252.63 -/ +def lsizenn : ∀ (v_lanetype : lanetype) , Nat + | lt => + (lsize lt) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:253.1-253.63 -/ +def lsizenn1 : ∀ (v_lanetype : lanetype) , Nat + | lt => + (lsize lt) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:254.1-254.63 -/ +def lsizenn2 : ∀ (v_lanetype : lanetype) , Nat + | lt => + (lsize lt) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:259.1-259.83 -/ +def jsizenn : ∀ (v_Jnn : Jnn) , Nat + | v_Jnn => + (lsize (lanetype_Jnn v_Jnn)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:262.1-262.42 -/ +def inv_jsizenn : ∀ (nat : Nat) , (Option Jnn) + | v_n => + (some (Option.get! (inv_jsize v_n))) + | x0 => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:268.1-268.56 -/ +def lunpack : ∀ (v_lanetype : lanetype) , numtype + | .I32 => + .I32 + | .I64 => + .I64 + | .F32 => + .F32 + | .F64 => + .F64 + | .I8 => + .I32 + | .I16 => + .I32 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:272.1-272.35 -/ +def unpack : ∀ (v_storagetype : storagetype) , valtype + | .BOT => + .BOT + | (.REF null_opt v_heaptype) => + (.REF null_opt v_heaptype) + | .V128 => + .V128 + | .F64 => + .F64 + | .F32 => + .F32 + | .I64 => + .I64 + | .I32 => + .I32 + | .I8 => + .I32 + | .I16 => + .I32 + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:276.1-276.73 -/ +def nunpack : ∀ (v_storagetype : storagetype) , (Option numtype) + | .I32 => + (some .I32) + | .I64 => + (some .I64) + | .F32 => + (some .F32) + | .F64 => + (some .F64) + | .I8 => + (some .I32) + | .I16 => + (some .I32) + | x0 => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:280.1-280.73 -/ +def vunpack : ∀ (v_storagetype : storagetype) , (Option vectype) + | .V128 => + (some .V128) + | x0 => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:283.1-283.74 -/ +def cunpack : ∀ (v_storagetype : storagetype) , (Option consttype) + | .I32 => + (some .I32) + | .I64 => + (some .I64) + | .F32 => + (some .F32) + | .F64 => + (some .F64) + | .V128 => + (some .V128) + | .I8 => + (some .I32) + | .I16 => + (some .I32) + | .I32 => + (some (consttype_numtype (lunpack .I32))) + | .I64 => + (some (consttype_numtype (lunpack .I64))) + | .F32 => + (some (consttype_numtype (lunpack .F32))) + | .F64 => + (some (consttype_numtype (lunpack .F64))) + | .I8 => + (some (consttype_numtype (lunpack .I8))) + | .I16 => + (some (consttype_numtype (lunpack .I16))) + | x0 => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:291.1-291.90 -/ +def minat : ∀ (v_addrtype : addrtype) (v_addrtype_0 : addrtype) , addrtype + | at_1, at_2 => + (if ((size (numtype_addrtype at_1)) <= (size (numtype_addrtype at_2))) then at_1 else at_2) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:295.1-295.82 -/ +def diffrt : ∀ (v_reftype : reftype) (v_reftype_0 : reftype) , reftype + | (.REF null_1_opt ht_1), (.REF (some .NULL) ht_2) => + (.REF none ht_1) + | (.REF null_1_opt ht_1), (.REF none ht_2) => + (.REF null_1_opt ht_1) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:300.1-300.49 -/ +def as_deftype : ∀ (v_typeuse : typeuse) , deftype + | (._DEF v_rectype v_n) => + (._DEF v_rectype v_n) + + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.6-308.13 -/ +inductive fun_tagsxt : (List externtype) -> (List tagtype) -> Prop where + | fun_tagsxt_case_0 : fun_tagsxt [] [] + | fun_tagsxt_case_1 : forall (jt : typeuse) (xt_lst : (List externtype)) (var_0 : (List tagtype)), + (fun_tagsxt xt_lst var_0) -> + fun_tagsxt ([(.TAG jt)] ++ xt_lst) ([jt] ++ var_0) + | fun_tagsxt_case_2 : forall (v_externtype : externtype) (xt_lst : (List externtype)) (var_0 : (List tagtype)), + (fun_tagsxt xt_lst var_0) -> + fun_tagsxt ([v_externtype] ++ xt_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.6-309.16 -/ +inductive fun_globalsxt : (List externtype) -> (List globaltype) -> Prop where + | fun_globalsxt_case_0 : fun_globalsxt [] [] + | fun_globalsxt_case_1 : forall (gt : globaltype) (xt_lst : (List externtype)) (var_0 : (List globaltype)), + (fun_globalsxt xt_lst var_0) -> + fun_globalsxt ([(.GLOBAL gt)] ++ xt_lst) ([gt] ++ var_0) + | fun_globalsxt_case_2 : forall (v_externtype : externtype) (xt_lst : (List externtype)) (var_0 : (List globaltype)), + (fun_globalsxt xt_lst var_0) -> + fun_globalsxt ([v_externtype] ++ xt_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.6-310.13 -/ +inductive fun_memsxt : (List externtype) -> (List memtype) -> Prop where + | fun_memsxt_case_0 : fun_memsxt [] [] + | fun_memsxt_case_1 : forall (mt : memtype) (xt_lst : (List externtype)) (var_0 : (List memtype)), + (fun_memsxt xt_lst var_0) -> + fun_memsxt ([(.MEM mt)] ++ xt_lst) ([mt] ++ var_0) + | fun_memsxt_case_2 : forall (v_externtype : externtype) (xt_lst : (List externtype)) (var_0 : (List memtype)), + (fun_memsxt xt_lst var_0) -> + fun_memsxt ([v_externtype] ++ xt_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.6-311.15 -/ +inductive fun_tablesxt : (List externtype) -> (List tabletype) -> Prop where + | fun_tablesxt_case_0 : fun_tablesxt [] [] + | fun_tablesxt_case_1 : forall (tt : tabletype) (xt_lst : (List externtype)) (var_0 : (List tabletype)), + (fun_tablesxt xt_lst var_0) -> + fun_tablesxt ([(.TABLE tt)] ++ xt_lst) ([tt] ++ var_0) + | fun_tablesxt_case_2 : forall (v_externtype : externtype) (xt_lst : (List externtype)) (var_0 : (List tabletype)), + (fun_tablesxt xt_lst var_0) -> + fun_tablesxt ([v_externtype] ++ xt_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.14 -/ +inductive fun_funcsxt : (List externtype) -> (List deftype) -> Prop where + | fun_funcsxt_case_0 : fun_funcsxt [] [] + | fun_funcsxt_case_1 : forall (v_rectype : rectype) (v_n : n) (xt_lst : (List externtype)) (var_0 : (List deftype)), + (fun_funcsxt xt_lst var_0) -> + fun_funcsxt ([(.FUNC (._DEF v_rectype v_n))] ++ xt_lst) ([(._DEF v_rectype v_n)] ++ var_0) + | fun_funcsxt_case_2 : forall (v_externtype : externtype) (xt_lst : (List externtype)) (var_0 : (List deftype)), + (fun_funcsxt xt_lst var_0) -> + fun_funcsxt ([v_externtype] ++ xt_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.6-337.20 -/ +inductive fun_subst_typevar : typevar -> (List typevar) -> (List typeuse) -> typeuse -> Prop where + | fun_subst_typevar_case_0 : forall (tv : typevar), fun_subst_typevar tv [] [] (typeuse_typevar tv) + | fun_subst_typevar_case_1 : forall (tv : typevar) (tv_1 : typevar) (tv'_lst : (List typevar)) (tu_1 : typeuse) (tu'_lst : (List typeuse)) (var_0 : typeuse), + (fun_subst_typevar tv tv'_lst tu'_lst var_0) -> + fun_subst_typevar tv ([tv_1] ++ tv'_lst) ([tu_1] ++ tu'_lst) (if (tv == tv_1) then tu_1 else var_0) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.6-401.17 -/ +inductive fun_minus_recs : (List typevar) -> (List typeuse) -> (List typevar) × (List typeuse) -> Prop where + | fun_minus_recs_case_0 : fun_minus_recs [] [] ([], []) + | fun_minus_recs_case_1 : forall (v_n : Nat) (tv_lst : (List typevar)) (tu_1 : typeuse) (tu_lst : (List typeuse)) (var_0 : (List typevar) × (List typeuse)), + (fun_minus_recs tv_lst tu_lst var_0) -> + fun_minus_recs ([(.REC v_n)] ++ tv_lst) ([tu_1] ++ tu_lst) var_0 + | fun_minus_recs_case_2 : forall (x : uN) (tv_lst : (List typevar)) (tu_1 : typeuse) (tu_lst : (List typeuse)) (tv'_lst : (List typevar)) (tu'_lst : (List typeuse)) (var_0 : (List typevar) × (List typeuse)), + (fun_minus_recs tv_lst tu_lst var_0) -> + ((tv'_lst, tu'_lst) == var_0) -> + fun_minus_recs ([(._IDX x)] ++ tv_lst) ([tu_1] ++ tu_lst) (([(._IDX x)] ++ tv'_lst), ([tu_1] ++ tu'_lst)) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 -/ +def subst_packtype : ∀ (v_packtype : packtype) (var_0 : (List typevar)) (var_1 : (List typeuse)) , packtype + | pt, tv_lst, tu_lst => + pt + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 -/ +def subst_numtype : ∀ (v_numtype : numtype) (var_0 : (List typevar)) (var_1 : (List typeuse)) , numtype + | nt, tv_lst, tu_lst => + nt + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 -/ +def subst_vectype : ∀ (v_vectype : vectype) (var_0 : (List typevar)) (var_1 : (List typeuse)) , vectype + | vt, tv_lst, tu_lst => + vt + + +/- Recursive Definitions at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-354.112 -/ +mutual +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.6-338.20 -/ +inductive fun_subst_typeuse : typeuse -> (List typevar) -> (List typeuse) -> typeuse -> Prop where + | fun_subst_typeuse_case_0 : forall (v_n : n) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : typeuse), + (fun_subst_typevar (.REC v_n) tv_lst tu_lst var_0) -> + fun_subst_typeuse (.REC v_n) tv_lst tu_lst var_0 + | fun_subst_typeuse_case_1 : forall (v_typeidx : typeidx) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : typeuse), + (fun_subst_typevar (._IDX v_typeidx) tv_lst tu_lst var_0) -> + fun_subst_typeuse (._IDX v_typeidx) tv_lst tu_lst var_0 + | fun_subst_typeuse_case_2 : forall (v_rectype : rectype) (v_n : n) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : deftype), + (fun_subst_deftype (._DEF v_rectype v_n) tv_lst tu_lst var_0) -> + fun_subst_typeuse (._DEF v_rectype v_n) tv_lst tu_lst (typeuse_deftype var_0) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.6-343.21 -/ +inductive fun_subst_heaptype : heaptype -> (List typevar) -> (List typeuse) -> heaptype -> Prop where + | fun_subst_heaptype_case_0 : forall (v_n : n) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : typeuse), + (fun_subst_typevar (.REC v_n) tv_lst tu_lst var_0) -> + fun_subst_heaptype (.REC v_n) tv_lst tu_lst (heaptype_typeuse var_0) + | fun_subst_heaptype_case_1 : forall (v_typeidx : typeidx) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : typeuse), + (fun_subst_typevar (._IDX v_typeidx) tv_lst tu_lst var_0) -> + fun_subst_heaptype (._IDX v_typeidx) tv_lst tu_lst (heaptype_typeuse var_0) + | fun_subst_heaptype_case_2 : forall (v_rectype : rectype) (v_n : n) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : deftype), + (fun_subst_deftype (._DEF v_rectype v_n) tv_lst tu_lst var_0) -> + fun_subst_heaptype (._DEF v_rectype v_n) tv_lst tu_lst (heaptype_deftype var_0) + | fun_subst_heaptype_case_3 : forall (ht : heaptype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_heaptype ht tv_lst tu_lst ht + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.6-344.20 -/ +inductive fun_subst_reftype : reftype -> (List typevar) -> (List typeuse) -> reftype -> Prop where + | fun_subst_reftype_case_0 : forall (null_opt : (Option null)) (ht : heaptype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : heaptype), + (fun_subst_heaptype ht tv_lst tu_lst var_0) -> + fun_subst_reftype (.REF null_opt ht) tv_lst tu_lst (.REF null_opt var_0) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.6-345.20 -/ +inductive fun_subst_valtype : valtype -> (List typevar) -> (List typeuse) -> valtype -> Prop where + | fun_subst_valtype_case_0 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_valtype .I32 tv_lst tu_lst (valtype_numtype (subst_numtype .I32 tv_lst tu_lst)) + | fun_subst_valtype_case_1 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_valtype .I64 tv_lst tu_lst (valtype_numtype (subst_numtype .I64 tv_lst tu_lst)) + | fun_subst_valtype_case_2 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_valtype .F32 tv_lst tu_lst (valtype_numtype (subst_numtype .F32 tv_lst tu_lst)) + | fun_subst_valtype_case_3 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_valtype .F64 tv_lst tu_lst (valtype_numtype (subst_numtype .F64 tv_lst tu_lst)) + | fun_subst_valtype_case_4 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_valtype .V128 tv_lst tu_lst (valtype_vectype (subst_vectype .V128 tv_lst tu_lst)) + | fun_subst_valtype_case_5 : forall (null_opt : (Option null)) (v_heaptype : heaptype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : reftype), + (fun_subst_reftype (.REF null_opt v_heaptype) tv_lst tu_lst var_0) -> + fun_subst_valtype (.REF null_opt v_heaptype) tv_lst tu_lst (valtype_reftype var_0) + | fun_subst_valtype_case_6 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_valtype .BOT tv_lst tu_lst .BOT + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.24 -/ +inductive fun_subst_storagetype : storagetype -> (List typevar) -> (List typeuse) -> storagetype -> Prop where + | fun_subst_storagetype_case_0 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : valtype), + (fun_subst_valtype .BOT tv_lst tu_lst var_0) -> + fun_subst_storagetype .BOT tv_lst tu_lst (storagetype_valtype var_0) + | fun_subst_storagetype_case_1 : forall (null_opt : (Option null)) (v_heaptype : heaptype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : valtype), + (fun_subst_valtype (.REF null_opt v_heaptype) tv_lst tu_lst var_0) -> + fun_subst_storagetype (.REF null_opt v_heaptype) tv_lst tu_lst (storagetype_valtype var_0) + | fun_subst_storagetype_case_2 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : valtype), + (fun_subst_valtype .V128 tv_lst tu_lst var_0) -> + fun_subst_storagetype .V128 tv_lst tu_lst (storagetype_valtype var_0) + | fun_subst_storagetype_case_3 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : valtype), + (fun_subst_valtype .F64 tv_lst tu_lst var_0) -> + fun_subst_storagetype .F64 tv_lst tu_lst (storagetype_valtype var_0) + | fun_subst_storagetype_case_4 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : valtype), + (fun_subst_valtype .F32 tv_lst tu_lst var_0) -> + fun_subst_storagetype .F32 tv_lst tu_lst (storagetype_valtype var_0) + | fun_subst_storagetype_case_5 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : valtype), + (fun_subst_valtype .I64 tv_lst tu_lst var_0) -> + fun_subst_storagetype .I64 tv_lst tu_lst (storagetype_valtype var_0) + | fun_subst_storagetype_case_6 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : valtype), + (fun_subst_valtype .I32 tv_lst tu_lst var_0) -> + fun_subst_storagetype .I32 tv_lst tu_lst (storagetype_valtype var_0) + | fun_subst_storagetype_case_7 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_storagetype .I8 tv_lst tu_lst (storagetype_packtype (subst_packtype .I8 tv_lst tu_lst)) + | fun_subst_storagetype_case_8 : forall (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_storagetype .I16 tv_lst tu_lst (storagetype_packtype (subst_packtype .I16 tv_lst tu_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.22 -/ +inductive fun_subst_fieldtype : fieldtype -> (List typevar) -> (List typeuse) -> fieldtype -> Prop where + | fun_subst_fieldtype_case_0 : forall (mut_opt : (Option «mut»)) (zt : storagetype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : storagetype), + (fun_subst_storagetype zt tv_lst tu_lst var_0) -> + fun_subst_fieldtype (.mk_fieldtype mut_opt zt) tv_lst tu_lst (.mk_fieldtype mut_opt var_0) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.6-351.21 -/ +inductive fun_subst_comptype : comptype -> (List typevar) -> (List typeuse) -> comptype -> Prop where + | fun_subst_comptype_case_0 : forall (ft_lst : (List fieldtype)) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0_lst : (List fieldtype)), + ((List.length var_0_lst) == (List.length ft_lst)) -> + Forall₂ (fun (var_0 : fieldtype) (ft : fieldtype) => (fun_subst_fieldtype ft tv_lst tu_lst var_0)) var_0_lst ft_lst -> + fun_subst_comptype (.STRUCT (.mk_list ft_lst)) tv_lst tu_lst (.STRUCT (.mk_list var_0_lst)) + | fun_subst_comptype_case_1 : forall (ft : fieldtype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : fieldtype), + (fun_subst_fieldtype ft tv_lst tu_lst var_0) -> + fun_subst_comptype (.ARRAY ft) tv_lst tu_lst (.ARRAY var_0) + | fun_subst_comptype_case_2 : forall (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_1_lst : (List valtype)) (var_0_lst : (List valtype)), + ((List.length var_1_lst) == (List.length t_2_lst)) -> + Forall₂ (fun (var_1 : valtype) (t_2 : valtype) => (fun_subst_valtype t_2 tv_lst tu_lst var_1)) var_1_lst t_2_lst -> + ((List.length var_0_lst) == (List.length t_1_lst)) -> + Forall₂ (fun (var_0 : valtype) (t_1 : valtype) => (fun_subst_valtype t_1 tv_lst tu_lst var_0)) var_0_lst t_1_lst -> + fun_subst_comptype (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst)) tv_lst tu_lst (.FUNC (.mk_list var_0_lst) (.mk_list var_1_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.20 -/ +inductive fun_subst_subtype : subtype -> (List typevar) -> (List typeuse) -> subtype -> Prop where + | fun_subst_subtype_case_0 : forall (final_opt : (Option final)) (tu'_lst : (List typeuse)) (ct : comptype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_1 : comptype) (var_0_lst : (List typeuse)), + (fun_subst_comptype ct tv_lst tu_lst var_1) -> + ((List.length var_0_lst) == (List.length tu'_lst)) -> + Forall₂ (fun (var_0 : typeuse) (tu' : typeuse) => (fun_subst_typeuse tu' tv_lst tu_lst var_0)) var_0_lst tu'_lst -> + fun_subst_subtype (.SUB final_opt tu'_lst ct) tv_lst tu_lst (.SUB final_opt var_0_lst var_1) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.20 -/ +inductive fun_subst_rectype : rectype -> (List typevar) -> (List typeuse) -> rectype -> Prop where + | fun_subst_rectype_case_0 : forall (st_lst : (List subtype)) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (tv'_lst : (List typevar)) (tu'_lst : (List typeuse)) (var_1 : (List typevar) × (List typeuse)) (var_0_lst : (List subtype)), + (fun_minus_recs tv_lst tu_lst var_1) -> + ((List.length var_0_lst) == (List.length st_lst)) -> + Forall₂ (fun (var_0 : subtype) (st : subtype) => (fun_subst_subtype st tv'_lst tu'_lst var_0)) var_0_lst st_lst -> + ((tv'_lst, tu'_lst) == var_1) -> + fun_subst_rectype (.REC (.mk_list st_lst)) tv_lst tu_lst (.REC (.mk_list var_0_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.6-354.20 -/ +inductive fun_subst_deftype : deftype -> (List typevar) -> (List typeuse) -> deftype -> Prop where + | fun_subst_deftype_case_0 : forall (qt : rectype) (i : Nat) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : rectype), + (fun_subst_rectype qt tv_lst tu_lst var_0) -> + fun_subst_deftype (._DEF qt i) tv_lst tu_lst (._DEF var_0 i) + +end + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:340.1-340.112 -/ +def subst_addrtype : ∀ (v_addrtype : addrtype) (var_0 : (List typevar)) (var_1 : (List typeuse)) , addrtype + | «at», tv_lst, tu_lst => + «at» + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 -/ +inductive fun_subst_tagtype : tagtype -> (List typevar) -> (List typeuse) -> tagtype -> Prop where + | fun_subst_tagtype_case_0 : forall (tu' : typeuse) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : tagtype), + (fun_subst_typeuse tu' tv_lst tu_lst var_0) -> + fun_subst_tagtype tu' tv_lst tu_lst var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.23 -/ +inductive fun_subst_globaltype : globaltype -> (List typevar) -> (List typeuse) -> globaltype -> Prop where + | fun_subst_globaltype_case_0 : forall (mut_opt : (Option «mut»)) (t : valtype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : valtype), + (fun_subst_valtype t tv_lst tu_lst var_0) -> + fun_subst_globaltype (.mk_globaltype mut_opt t) tv_lst tu_lst (.mk_globaltype mut_opt var_0) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 -/ +def subst_memtype : ∀ (v_memtype : memtype) (var_0 : (List typevar)) (var_1 : (List typeuse)) , memtype + | (.PAGE «at» lim), tv_lst, tu_lst => + (.PAGE «at» lim) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:359.6-359.22 -/ +inductive fun_subst_tabletype : tabletype -> (List typevar) -> (List typeuse) -> tabletype -> Prop where + | fun_subst_tabletype_case_0 : forall («at» : addrtype) (lim : limits) (rt : reftype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : reftype), + (fun_subst_reftype rt tv_lst tu_lst var_0) -> + fun_subst_tabletype (.mk_tabletype «at» lim rt) tv_lst tu_lst (.mk_tabletype «at» lim var_0) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:361.6-361.23 -/ +inductive fun_subst_externtype : externtype -> (List typevar) -> (List typeuse) -> externtype -> Prop where + | fun_subst_externtype_case_0 : forall (jt : typeuse) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : tagtype), + (fun_subst_tagtype jt tv_lst tu_lst var_0) -> + fun_subst_externtype (.TAG jt) tv_lst tu_lst (.TAG var_0) + | fun_subst_externtype_case_1 : forall (gt : globaltype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : globaltype), + (fun_subst_globaltype gt tv_lst tu_lst var_0) -> + fun_subst_externtype (.GLOBAL gt) tv_lst tu_lst (.GLOBAL var_0) + | fun_subst_externtype_case_2 : forall (tt : tabletype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : tabletype), + (fun_subst_tabletype tt tv_lst tu_lst var_0) -> + fun_subst_externtype (.TABLE tt) tv_lst tu_lst (.TABLE var_0) + | fun_subst_externtype_case_3 : forall (mt : memtype) (tv_lst : (List typevar)) (tu_lst : (List typeuse)), fun_subst_externtype (.MEM mt) tv_lst tu_lst (.MEM (subst_memtype mt tv_lst tu_lst)) + | fun_subst_externtype_case_4 : forall (v_rectype : rectype) (v_n : n) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_0 : deftype), + (fun_subst_deftype (._DEF v_rectype v_n) tv_lst tu_lst var_0) -> + fun_subst_externtype (.FUNC (._DEF v_rectype v_n)) tv_lst tu_lst (.FUNC (typeuse_deftype var_0)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:362.6-362.23 -/ +inductive fun_subst_moduletype : moduletype -> (List typevar) -> (List typeuse) -> moduletype -> Prop where + | fun_subst_moduletype_case_0 : forall (xt_1_lst : (List externtype)) (xt_2_lst : (List externtype)) (tv_lst : (List typevar)) (tu_lst : (List typeuse)) (var_1_lst : (List externtype)) (var_0_lst : (List externtype)), + ((List.length var_1_lst) == (List.length xt_2_lst)) -> + Forall₂ (fun (var_1 : externtype) (xt_2 : externtype) => (fun_subst_externtype xt_2 tv_lst tu_lst var_1)) var_1_lst xt_2_lst -> + ((List.length var_0_lst) == (List.length xt_1_lst)) -> + Forall₂ (fun (var_0 : externtype) (xt_1 : externtype) => (fun_subst_externtype xt_1 tv_lst tu_lst var_0)) var_0_lst xt_1_lst -> + fun_subst_moduletype (.mk_moduletype xt_1_lst xt_2_lst) tv_lst tu_lst (.mk_moduletype var_0_lst var_1_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:431.6-431.24 -/ +inductive fun_subst_all_valtype : valtype -> (List typeuse) -> valtype -> Prop where + | fun_subst_all_valtype_case_0 : forall (t : valtype) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : valtype), + (fun_subst_valtype t (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst var_0) -> + fun_subst_all_valtype t tu_lst var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:432.6-432.24 -/ +inductive fun_subst_all_reftype : reftype -> (List typeuse) -> reftype -> Prop where + | fun_subst_all_reftype_case_0 : forall (rt : reftype) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : reftype), + (fun_subst_reftype rt (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst var_0) -> + fun_subst_all_reftype rt tu_lst var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:433.6-433.24 -/ +inductive fun_subst_all_deftype : deftype -> (List typeuse) -> deftype -> Prop where + | fun_subst_all_deftype_case_0 : forall (dt : deftype) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : deftype), + (fun_subst_deftype dt (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst var_0) -> + fun_subst_all_deftype dt tu_lst var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:434.6-434.24 -/ +inductive fun_subst_all_tagtype : tagtype -> (List typeuse) -> tagtype -> Prop where + | fun_subst_all_tagtype_case_0 : forall (jt : typeuse) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : tagtype), + (fun_subst_tagtype jt (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst var_0) -> + fun_subst_all_tagtype jt tu_lst var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:435.6-435.27 -/ +inductive fun_subst_all_globaltype : globaltype -> (List typeuse) -> globaltype -> Prop where + | fun_subst_all_globaltype_case_0 : forall (gt : globaltype) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : globaltype), + (fun_subst_globaltype gt (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst var_0) -> + fun_subst_all_globaltype gt tu_lst var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:436.6-436.24 -/ +inductive fun_subst_all_memtype : memtype -> (List typeuse) -> memtype -> Prop where + | fun_subst_all_memtype_case_0 : forall (mt : memtype) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)), fun_subst_all_memtype mt tu_lst (subst_memtype mt (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:437.6-437.26 -/ +inductive fun_subst_all_tabletype : tabletype -> (List typeuse) -> tabletype -> Prop where + | fun_subst_all_tabletype_case_0 : forall (tt : tabletype) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : tabletype), + (fun_subst_tabletype tt (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst var_0) -> + fun_subst_all_tabletype tt tu_lst var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:438.6-438.27 -/ +inductive fun_subst_all_externtype : externtype -> (List typeuse) -> externtype -> Prop where + | fun_subst_all_externtype_case_0 : forall (xt : externtype) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : externtype), + (fun_subst_externtype xt (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst var_0) -> + fun_subst_all_externtype xt tu_lst var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:439.6-439.27 -/ +inductive fun_subst_all_moduletype : moduletype -> (List typeuse) -> moduletype -> Prop where + | fun_subst_all_moduletype_case_0 : forall (mmt : moduletype) (tu_lst : (List typeuse)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : moduletype), + (fun_subst_moduletype mmt (List.map (fun (i : Nat) => (._IDX (.mk_uN i))) i_lst) tu_lst var_0) -> + fun_subst_all_moduletype mmt tu_lst var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.6-451.25 -/ +inductive fun_subst_all_deftypes : (List deftype) -> (List typeuse) -> (List deftype) -> Prop where + | fun_subst_all_deftypes_case_0 : forall (tu_lst : (List typeuse)), fun_subst_all_deftypes [] tu_lst [] + | fun_subst_all_deftypes_case_1 : forall (dt_1 : deftype) (dt_lst : (List deftype)) (tu_lst : (List typeuse)) (var_1 : (List deftype)) (var_0 : deftype), + (fun_subst_all_deftypes dt_lst tu_lst var_1) -> + (fun_subst_all_deftype dt_1 tu_lst var_0) -> + fun_subst_all_deftypes ([dt_1] ++ dt_lst) tu_lst ([var_0] ++ var_1) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.6-458.13 -/ +inductive fun_rollrt : typeidx -> rectype -> rectype -> Prop where + | fun_rollrt_case_0 : forall (x : uN) (v_rectype : rectype) (subtype_lst : (List subtype)) (i_lst : (List Nat)) (v_n : Nat) (var_0_lst : (List subtype)), + Forall₂ (fun (var_0 : subtype) (v_subtype : subtype) => (fun_subst_subtype v_subtype (List.map (fun (i : Nat) => (._IDX (.mk_uN ((proj_uN_0 x) + i)))) i_lst) (List.map (fun (i : Nat) => (.REC i)) i_lst) var_0)) var_0_lst subtype_lst -> + (v_rectype == (.REC (.mk_list subtype_lst))) -> + fun_rollrt x v_rectype (.REC (.mk_list var_0_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.6-459.15 -/ +inductive fun_unrollrt : rectype -> rectype -> Prop where + | fun_unrollrt_case_0 : forall (v_rectype : rectype) (subtype_lst : (List subtype)) (i_lst : (List Nat)) (v_n : Nat) (var_0_lst : (List subtype)), + Forall₂ (fun (var_0 : subtype) (v_subtype : subtype) => (fun_subst_subtype v_subtype (List.map (fun (i : Nat) => (.REC i)) i_lst) (List.map (fun (i : Nat) => (._DEF v_rectype i)) i_lst) var_0)) var_0_lst subtype_lst -> + (v_rectype == (.REC (.mk_list subtype_lst))) -> + fun_unrollrt v_rectype (.REC (.mk_list var_0_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:460.6-460.13 -/ +inductive fun_rolldt : typeidx -> rectype -> (List deftype) -> Prop where + | fun_rolldt_case_0 : forall (x : uN) (v_rectype : rectype) (subtype_lst : (List subtype)) (v_n : Nat) (i_lst : (List Nat)) (var_0 : rectype), + (fun_rollrt x v_rectype var_0) -> + (var_0 == (.REC (.mk_list subtype_lst))) -> + fun_rolldt x v_rectype (List.map (fun (i : Nat) => (._DEF (.REC (.mk_list subtype_lst)) i)) i_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:461.6-461.15 -/ +inductive fun_unrolldt : deftype -> subtype -> Prop where + | fun_unrolldt_case_0 : forall (v_rectype : rectype) (i : Nat) (subtype_lst : (List subtype)) (var_0 : rectype), + (i < (List.length subtype_lst)) -> + (fun_unrollrt v_rectype var_0) -> + (var_0 == (.REC (.mk_list subtype_lst))) -> + fun_unrolldt (._DEF v_rectype i) (subtype_lst[i]!) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:462.6-462.15 -/ +inductive fun_expanddt : deftype -> comptype -> Prop where + | fun_expanddt_case_0 : forall (v_deftype : deftype) (v_comptype : comptype) (final_opt : (Option final)) (typeuse_lst : (List typeuse)) (var_0 : subtype), + (fun_unrolldt v_deftype var_0) -> + (var_0 == (.SUB final_opt typeuse_lst v_comptype)) -> + fun_expanddt v_deftype v_comptype + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:477.1-477.35 -/ +def free_addrtype : ∀ (v_numtype : numtype) , free + | .I32 => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | .I64 => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:478.1-478.34 -/ +def free_numtype : ∀ (v_numtype : numtype) , free + | v_numtype => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:479.1-479.36 -/ +def free_packtype : ∀ (v_packtype : packtype) , free + | v_packtype => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:480.1-480.36 -/ +def free_lanetype : ∀ (v_lanetype : lanetype) , free + | .I32 => + (free_numtype .I32) + | .I64 => + (free_numtype .I64) + | .F32 => + (free_numtype .F32) + | .F64 => + (free_numtype .F64) + | .I8 => + (free_packtype .I8) + | .I16 => + (free_packtype .I16) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:481.1-481.34 -/ +def free_vectype : ∀ (v_vectype : vectype) , free + | v_vectype => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:482.1-482.38 -/ +def free_consttype : ∀ (v_consttype : consttype) , free + | .I32 => + (free_numtype .I32) + | .I64 => + (free_numtype .I64) + | .F32 => + (free_numtype .F32) + | .F64 => + (free_numtype .F64) + | .V128 => + (free_vectype .V128) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:483.1-483.42 -/ +def free_absheaptype : ∀ (v_absheaptype : absheaptype) , free + | v_absheaptype => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:486.1-486.34 -/ +def free_typevar : ∀ (v_typevar : typevar) , free + | (._IDX v_typeidx) => + (free_typeidx v_typeidx) + | (.REC v_n) => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Recursive Definitions at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.1-523.34 -/ +mutual +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.6-484.20 -/ +inductive fun_free_heaptype : heaptype -> free -> Prop where + | fun_free_heaptype_case_0 : fun_free_heaptype .ANY (free_absheaptype .ANY) + | fun_free_heaptype_case_1 : fun_free_heaptype .EQ (free_absheaptype .EQ) + | fun_free_heaptype_case_2 : fun_free_heaptype .I31 (free_absheaptype .I31) + | fun_free_heaptype_case_3 : fun_free_heaptype .STRUCT (free_absheaptype .STRUCT) + | fun_free_heaptype_case_4 : fun_free_heaptype .ARRAY (free_absheaptype .ARRAY) + | fun_free_heaptype_case_5 : fun_free_heaptype .NONE (free_absheaptype .NONE) + | fun_free_heaptype_case_6 : fun_free_heaptype .FUNC (free_absheaptype .FUNC) + | fun_free_heaptype_case_7 : fun_free_heaptype .NOFUNC (free_absheaptype .NOFUNC) + | fun_free_heaptype_case_8 : fun_free_heaptype .EXN (free_absheaptype .EXN) + | fun_free_heaptype_case_9 : fun_free_heaptype .NOEXN (free_absheaptype .NOEXN) + | fun_free_heaptype_case_10 : fun_free_heaptype .EXTERN (free_absheaptype .EXTERN) + | fun_free_heaptype_case_11 : fun_free_heaptype .NOEXTERN (free_absheaptype .NOEXTERN) + | fun_free_heaptype_case_12 : fun_free_heaptype .BOT (free_absheaptype .BOT) + | fun_free_heaptype_case_13 : forall (n_0 : n) (var_0 : free), + (fun_free_typeuse (.REC n_0) var_0) -> + fun_free_heaptype (.REC n_0) var_0 + | fun_free_heaptype_case_14 : forall (v_rectype : rectype) (v_n : n) (var_0 : free), + (fun_free_typeuse (._DEF v_rectype v_n) var_0) -> + fun_free_heaptype (._DEF v_rectype v_n) var_0 + | fun_free_heaptype_case_15 : forall (v_typeidx : typeidx) (var_0 : free), + (fun_free_typeuse (._IDX v_typeidx) var_0) -> + fun_free_heaptype (._IDX v_typeidx) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.6-485.19 -/ +inductive fun_free_reftype : reftype -> free -> Prop where + | fun_free_reftype_case_0 : forall (null_opt : (Option null)) (v_heaptype : heaptype) (var_0 : free), + (fun_free_heaptype v_heaptype var_0) -> + fun_free_reftype (.REF null_opt v_heaptype) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.6-487.19 -/ +inductive fun_free_typeuse : typeuse -> free -> Prop where + | fun_free_typeuse_case_0 : forall (v_n : n), fun_free_typeuse (.REC v_n) (free_typevar (.REC v_n)) + | fun_free_typeuse_case_1 : forall (v_typeidx : typeidx), fun_free_typeuse (._IDX v_typeidx) (free_typevar (._IDX v_typeidx)) + | fun_free_typeuse_case_2 : forall (v_rectype : rectype) (v_n : n) (var_0 : free), + (fun_free_deftype (._DEF v_rectype v_n) var_0) -> + fun_free_typeuse (._DEF v_rectype v_n) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.6-488.19 -/ +inductive fun_free_valtype : valtype -> free -> Prop where + | fun_free_valtype_case_0 : fun_free_valtype .I32 (free_numtype .I32) + | fun_free_valtype_case_1 : fun_free_valtype .I64 (free_numtype .I64) + | fun_free_valtype_case_2 : fun_free_valtype .F32 (free_numtype .F32) + | fun_free_valtype_case_3 : fun_free_valtype .F64 (free_numtype .F64) + | fun_free_valtype_case_4 : fun_free_valtype .V128 (free_vectype .V128) + | fun_free_valtype_case_5 : forall (null_opt : (Option null)) (v_heaptype : heaptype) (var_0 : free), + (fun_free_reftype (.REF null_opt v_heaptype) var_0) -> + fun_free_valtype (.REF null_opt v_heaptype) var_0 + | fun_free_valtype_case_6 : fun_free_valtype .BOT { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.6-490.22 -/ +inductive fun_free_resulttype : resulttype -> free -> Prop where + | fun_free_resulttype_case_0 : forall (valtype_lst : (List valtype)) (var_1_lst : (List free)) (var_0 : free), + ((List.length var_1_lst) == (List.length valtype_lst)) -> + Forall₂ (fun (var_1 : free) (v_valtype : valtype) => (fun_free_valtype v_valtype var_1)) var_1_lst valtype_lst -> + (fun_free_list var_1_lst var_0) -> + fun_free_resulttype (.mk_list valtype_lst) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.6-491.23 -/ +inductive fun_free_storagetype : storagetype -> free -> Prop where + | fun_free_storagetype_case_0 : forall (var_0 : free), + (fun_free_valtype .BOT var_0) -> + fun_free_storagetype .BOT var_0 + | fun_free_storagetype_case_1 : forall (null_opt : (Option null)) (v_heaptype : heaptype) (var_0 : free), + (fun_free_valtype (.REF null_opt v_heaptype) var_0) -> + fun_free_storagetype (.REF null_opt v_heaptype) var_0 + | fun_free_storagetype_case_2 : forall (var_0 : free), + (fun_free_valtype .V128 var_0) -> + fun_free_storagetype .V128 var_0 + | fun_free_storagetype_case_3 : forall (var_0 : free), + (fun_free_valtype .F64 var_0) -> + fun_free_storagetype .F64 var_0 + | fun_free_storagetype_case_4 : forall (var_0 : free), + (fun_free_valtype .F32 var_0) -> + fun_free_storagetype .F32 var_0 + | fun_free_storagetype_case_5 : forall (var_0 : free), + (fun_free_valtype .I64 var_0) -> + fun_free_storagetype .I64 var_0 + | fun_free_storagetype_case_6 : forall (var_0 : free), + (fun_free_valtype .I32 var_0) -> + fun_free_storagetype .I32 var_0 + | fun_free_storagetype_case_7 : fun_free_storagetype .I8 (free_packtype .I8) + | fun_free_storagetype_case_8 : fun_free_storagetype .I16 (free_packtype .I16) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.6-492.21 -/ +inductive fun_free_fieldtype : fieldtype -> free -> Prop where + | fun_free_fieldtype_case_0 : forall (mut_opt : (Option «mut»)) (v_storagetype : storagetype) (var_0 : free), + (fun_free_storagetype v_storagetype var_0) -> + fun_free_fieldtype (.mk_fieldtype mut_opt v_storagetype) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.6-493.20 -/ +inductive fun_free_comptype : comptype -> free -> Prop where + | fun_free_comptype_case_0 : forall (fieldtype_lst : (List fieldtype)) (var_1_lst : (List free)) (var_0 : free), + ((List.length var_1_lst) == (List.length fieldtype_lst)) -> + Forall₂ (fun (var_1 : free) (v_fieldtype : fieldtype) => (fun_free_fieldtype v_fieldtype var_1)) var_1_lst fieldtype_lst -> + (fun_free_list var_1_lst var_0) -> + fun_free_comptype (.STRUCT (.mk_list fieldtype_lst)) var_0 + | fun_free_comptype_case_1 : forall (v_fieldtype : fieldtype) (var_0 : free), + (fun_free_fieldtype v_fieldtype var_0) -> + fun_free_comptype (.ARRAY v_fieldtype) var_0 + | fun_free_comptype_case_2 : forall (resulttype_1 : (list valtype)) (resulttype_2 : (list valtype)) (var_1 : free) (var_0 : free), + (fun_free_resulttype resulttype_2 var_1) -> + (fun_free_resulttype resulttype_1 var_0) -> + fun_free_comptype (.FUNC resulttype_1 resulttype_2) (var_0 ++ var_1) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.6-494.19 -/ +inductive fun_free_subtype : subtype -> free -> Prop where + | fun_free_subtype_case_0 : forall (final_opt : (Option final)) (typeuse_lst : (List typeuse)) (v_comptype : comptype) (var_2 : free) (var_1_lst : (List free)) (var_0 : free), + (fun_free_comptype v_comptype var_2) -> + ((List.length var_1_lst) == (List.length typeuse_lst)) -> + Forall₂ (fun (var_1 : free) (v_typeuse : typeuse) => (fun_free_typeuse v_typeuse var_1)) var_1_lst typeuse_lst -> + (fun_free_list var_1_lst var_0) -> + fun_free_subtype (.SUB final_opt typeuse_lst v_comptype) (var_0 ++ var_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.6-495.19 -/ +inductive fun_free_rectype : rectype -> free -> Prop where + | fun_free_rectype_case_0 : forall (subtype_lst : (List subtype)) (var_1_lst : (List free)) (var_0 : free), + ((List.length var_1_lst) == (List.length subtype_lst)) -> + Forall₂ (fun (var_1 : free) (v_subtype : subtype) => (fun_free_subtype v_subtype var_1)) var_1_lst subtype_lst -> + (fun_free_list var_1_lst var_0) -> + fun_free_rectype (.REC (.mk_list subtype_lst)) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.6-523.19 -/ +inductive fun_free_deftype : deftype -> free -> Prop where + | fun_free_deftype_case_0 : forall (v_rectype : rectype) (v_n : Nat) (var_0 : free), + (fun_free_rectype v_rectype var_0) -> + fun_free_deftype (._DEF v_rectype v_n) var_0 + +end + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.19 -/ +inductive fun_free_tagtype : tagtype -> free -> Prop where + | fun_free_tagtype_case_0 : forall (v_rectype : rectype) (v_n : n) (var_0 : free), + (fun_free_deftype (._DEF v_rectype v_n) var_0) -> + fun_free_tagtype (._DEF v_rectype v_n) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:498.6-498.22 -/ +inductive fun_free_globaltype : globaltype -> free -> Prop where + | fun_free_globaltype_case_0 : forall (mut_opt : (Option «mut»)) (v_valtype : valtype) (var_0 : free), + (fun_free_valtype v_valtype var_0) -> + fun_free_globaltype (.mk_globaltype mut_opt v_valtype) var_0 + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:499.1-499.34 -/ +def free_memtype : ∀ (v_memtype : memtype) , free + | (.PAGE v_addrtype v_limits) => + (free_addrtype (numtype_addrtype v_addrtype)) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.6-500.21 -/ +inductive fun_free_tabletype : tabletype -> free -> Prop where + | fun_free_tabletype_case_0 : forall (v_addrtype : addrtype) (v_limits : limits) (v_reftype : reftype) (var_0 : free), + (fun_free_reftype v_reftype var_0) -> + fun_free_tabletype (.mk_tabletype v_addrtype v_limits v_reftype) ((free_addrtype (numtype_addrtype v_addrtype)) ++ var_0) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.36 -/ +def free_datatype : ∀ (v_datatype : datatype) , free + | .OK => + { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:502.6-502.20 -/ +inductive fun_free_elemtype : elemtype -> free -> Prop where + | fun_free_elemtype_case_0 : forall (v_reftype : reftype) (var_0 : free), + (fun_free_reftype v_reftype var_0) -> + fun_free_elemtype v_reftype var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:503.6-503.22 -/ +inductive fun_free_externtype : externtype -> free -> Prop where + | fun_free_externtype_case_0 : forall (v_tagtype : typeuse) (var_0 : free), + (fun_free_tagtype v_tagtype var_0) -> + fun_free_externtype (.TAG v_tagtype) var_0 + | fun_free_externtype_case_1 : forall (v_globaltype : globaltype) (var_0 : free), + (fun_free_globaltype v_globaltype var_0) -> + fun_free_externtype (.GLOBAL v_globaltype) var_0 + | fun_free_externtype_case_2 : forall (v_memtype : memtype), fun_free_externtype (.MEM v_memtype) (free_memtype v_memtype) + | fun_free_externtype_case_3 : forall (v_tabletype : tabletype) (var_0 : free), + (fun_free_tabletype v_tabletype var_0) -> + fun_free_externtype (.TABLE v_tabletype) var_0 + | fun_free_externtype_case_4 : forall (v_typeuse : typeuse) (var_0 : free), + (fun_free_typeuse v_typeuse var_0) -> + fun_free_externtype (.FUNC v_typeuse) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:504.6-504.22 -/ +inductive fun_free_moduletype : moduletype -> free -> Prop where + | fun_free_moduletype_case_0 : forall (externtype_1_lst : (List externtype)) (externtype_2_lst : (List externtype)) (var_3_lst : (List free)) (var_2 : free) (var_1_lst : (List free)) (var_0 : free), + ((List.length var_3_lst) == (List.length externtype_2_lst)) -> + Forall₂ (fun (var_3 : free) (externtype_2 : externtype) => (fun_free_externtype externtype_2 var_3)) var_3_lst externtype_2_lst -> + (fun_free_list var_3_lst var_2) -> + ((List.length var_1_lst) == (List.length externtype_1_lst)) -> + Forall₂ (fun (var_1 : free) (externtype_1 : externtype) => (fun_free_externtype externtype_1 var_1)) var_1_lst externtype_1_lst -> + (fun_free_list var_1_lst var_0) -> + fun_free_moduletype (.mk_moduletype externtype_1_lst externtype_2_lst) (var_0 ++ var_2) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:7.1-7.21 -/ +inductive num_ : Type where + | mk_num__0 (v_Inn : Inn) (var_x : iN) : num_ + | mk_num__1 (v_Fnn : Fnn) (var_x : fN) : num_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:7.8-7.13 -/ +inductive wf_num_ : numtype -> num_ -> Prop where + | num__case_0 : forall (v_numtype : numtype) (v_Inn : Inn) (var_x : iN), + (wf_uN (size (numtype_addrtype v_Inn)) var_x) -> + (v_numtype == (numtype_addrtype v_Inn)) -> + wf_num_ v_numtype (.mk_num__0 v_Inn var_x) + | num__case_1 : forall (v_numtype : numtype) (v_Fnn : Fnn) (var_x : fN), + (wf_fN (sizenn (numtype_Fnn v_Fnn)) var_x) -> + (v_numtype == (numtype_Fnn v_Fnn)) -> + wf_num_ v_numtype (.mk_num__1 v_Fnn var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:7.1-7.21 -/ +def proj_num__0 : ∀ (var_x : num_) , (Option iN) + | (.mk_num__0 v_Inn var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:7.1-7.21 -/ +def proj_num__1 : ∀ (var_x : num_) , (Option fN) + | (.mk_num__1 v_Fnn var_x) => + (some var_x) + | var_x => + none + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:11.1-11.38 -/ +abbrev pack_ : Type := iN + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:13.1-13.23 -/ +inductive lane_ : Type where + | mk_lane__0 (v_numtype : numtype) (var_x : num_) : lane_ + | mk_lane__1 (v_packtype : packtype) (var_x : pack_) : lane_ + | mk_lane__2 (v_Jnn : Jnn) (var_x : iN) : lane_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:13.8-13.14 -/ +inductive wf_lane_ : lanetype -> lane_ -> Prop where + | lane__case_0 : forall (v_lanetype : lanetype) (v_numtype : numtype) (var_x : num_), + (wf_num_ v_numtype var_x) -> + (v_lanetype == (lanetype_numtype v_numtype)) -> + wf_lane_ v_lanetype (.mk_lane__0 v_numtype var_x) + | lane__case_1 : forall (v_lanetype : lanetype) (v_packtype : packtype) (var_x : pack_), + (wf_uN (psize v_packtype) var_x) -> + (v_lanetype == (lanetype_packtype v_packtype)) -> + wf_lane_ v_lanetype (.mk_lane__1 v_packtype var_x) + | lane__case_2 : forall (v_lanetype : lanetype) (v_Jnn : Jnn) (var_x : iN), + (wf_uN (lsize (lanetype_Jnn v_Jnn)) var_x) -> + (v_lanetype == (lanetype_Jnn v_Jnn)) -> + wf_lane_ v_lanetype (.mk_lane__2 v_Jnn var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:13.1-13.23 -/ +def proj_lane__0 : ∀ (var_x : lane_) , (Option num_) + | (.mk_lane__0 v_numtype var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:13.1-13.23 -/ +def proj_lane__1 : ∀ (var_x : lane_) , (Option pack_) + | (.mk_lane__1 v_packtype var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:13.1-13.23 -/ +def proj_lane__2 : ∀ (var_x : lane_) , (Option iN) + | (.mk_lane__2 v_Jnn var_x) => + (some var_x) + | var_x => + none + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:18.1-18.35 -/ +abbrev vec_ : Type := vN + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:20.1-20.25 -/ +inductive lit_ : Type where + | mk_lit__0 (v_numtype : numtype) (var_x : num_) : lit_ + | mk_lit__1 (v_vectype : vectype) (var_x : vec_) : lit_ + | mk_lit__2 (v_packtype : packtype) (var_x : pack_) : lit_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:20.8-20.13 -/ +inductive wf_lit_ : storagetype -> lit_ -> Prop where + | lit__case_0 : forall (v_storagetype : storagetype) (v_numtype : numtype) (var_x : num_), + (wf_num_ v_numtype var_x) -> + (v_storagetype == (storagetype_numtype v_numtype)) -> + wf_lit_ v_storagetype (.mk_lit__0 v_numtype var_x) + | lit__case_1 : forall (v_storagetype : storagetype) (v_vectype : vectype) (var_x : vec_), + (wf_uN (vsize v_vectype) var_x) -> + (v_storagetype == (storagetype_vectype v_vectype)) -> + wf_lit_ v_storagetype (.mk_lit__1 v_vectype var_x) + | lit__case_2 : forall (v_storagetype : storagetype) (v_packtype : packtype) (var_x : pack_), + (wf_uN (psize v_packtype) var_x) -> + (v_storagetype == (storagetype_packtype v_packtype)) -> + wf_lit_ v_storagetype (.mk_lit__2 v_packtype var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:20.1-20.25 -/ +def proj_lit__0 : ∀ (var_x : lit_) , (Option num_) + | (.mk_lit__0 v_numtype var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:20.1-20.25 -/ +def proj_lit__1 : ∀ (var_x : lit_) , (Option vec_) + | (.mk_lit__1 v_vectype var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:20.1-20.25 -/ +def proj_lit__2 : ∀ (var_x : lit_) , (Option pack_) + | (.mk_lit__2 v_packtype var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:28.1-28.56 -/ +inductive sz : Type where + | mk_sz (i : Nat) : sz +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:28.1-28.56 -/ +def proj_sz_0 : ∀ (x : sz) , Nat + | (.mk_sz v_num_0) => + (v_num_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:28.8-28.10 -/ +inductive wf_sz : sz -> Prop where + | sz_case_0 : forall (i : Nat), + ((((i == 8) || (i == 16)) || (i == 32)) || (i == 64)) -> + wf_sz (.mk_sz i) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:29.1-29.42 -/ +inductive sx : Type where + | U : sx + | S : sx +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:31.1-31.22 -/ +inductive unop_Inn : Type where + | CLZ : unop_Inn + | CTZ : unop_Inn + | POPCNT : unop_Inn + | EXTEND (v_sz : sz) : unop_Inn +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:31.8-31.14 -/ +inductive wf_unop_Inn : Inn -> unop_Inn -> Prop where + | unop_Inn_case_0 : forall (v_Inn : Inn), wf_unop_Inn v_Inn .CLZ + | unop_Inn_case_1 : forall (v_Inn : Inn), wf_unop_Inn v_Inn .CTZ + | unop_Inn_case_2 : forall (v_Inn : Inn), wf_unop_Inn v_Inn .POPCNT + | unop_Inn_case_3 : forall (v_Inn : Inn) (v_sz : sz), + (wf_sz v_sz) -> + ((proj_sz_0 v_sz) < (sizenn (numtype_addrtype v_Inn))) -> + wf_unop_Inn v_Inn (.EXTEND v_sz) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:31.1-31.22 -/ +inductive unop_Fnn : Type where + | ABS : unop_Fnn + | NEG : unop_Fnn + | SQRT : unop_Fnn + | CEIL : unop_Fnn + | FLOOR : unop_Fnn + | TRUNC : unop_Fnn + | NEAREST : unop_Fnn +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:31.1-31.22 -/ +inductive unop_ : Type where + | mk_unop__0 (v_Inn : Inn) (var_x : unop_Inn) : unop_ + | mk_unop__1 (v_Fnn : Fnn) (var_x : unop_Fnn) : unop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:31.8-31.14 -/ +inductive wf_unop_ : numtype -> unop_ -> Prop where + | unop__case_0 : forall (v_numtype : numtype) (v_Inn : Inn) (var_x : unop_Inn), + (wf_unop_Inn v_Inn var_x) -> + (v_numtype == (numtype_addrtype v_Inn)) -> + wf_unop_ v_numtype (.mk_unop__0 v_Inn var_x) + | unop__case_1 : forall (v_numtype : numtype) (v_Fnn : Fnn) (var_x : unop_Fnn), + (v_numtype == (numtype_Fnn v_Fnn)) -> + wf_unop_ v_numtype (.mk_unop__1 v_Fnn var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:31.1-31.22 -/ +def proj_unop__0 : ∀ (var_x : unop_) , (Option unop_Inn) + | (.mk_unop__0 v_Inn var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:31.1-31.22 -/ +def proj_unop__1 : ∀ (var_x : unop_) , (Option unop_Fnn) + | (.mk_unop__1 v_Fnn var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:35.1-35.23 -/ +inductive binop_Inn : Type where + | ADD : binop_Inn + | SUB : binop_Inn + | MUL : binop_Inn + | DIV (v_sx : sx) : binop_Inn + | REM (v_sx : sx) : binop_Inn + | AND : binop_Inn + | OR : binop_Inn + | XOR : binop_Inn + | SHL : binop_Inn + | SHR (v_sx : sx) : binop_Inn + | ROTL : binop_Inn + | ROTR : binop_Inn +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:35.1-35.23 -/ +inductive binop_Fnn : Type where + | ADD : binop_Fnn + | SUB : binop_Fnn + | MUL : binop_Fnn + | DIV : binop_Fnn + | MIN : binop_Fnn + | MAX : binop_Fnn + | COPYSIGN : binop_Fnn +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:35.1-35.23 -/ +inductive binop_ : Type where + | mk_binop__0 (v_Inn : Inn) (var_x : binop_Inn) : binop_ + | mk_binop__1 (v_Fnn : Fnn) (var_x : binop_Fnn) : binop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:35.8-35.15 -/ +inductive wf_binop_ : numtype -> binop_ -> Prop where + | binop__case_0 : forall (v_numtype : numtype) (v_Inn : Inn) (var_x : binop_Inn), + (v_numtype == (numtype_addrtype v_Inn)) -> + wf_binop_ v_numtype (.mk_binop__0 v_Inn var_x) + | binop__case_1 : forall (v_numtype : numtype) (v_Fnn : Fnn) (var_x : binop_Fnn), + (v_numtype == (numtype_Fnn v_Fnn)) -> + wf_binop_ v_numtype (.mk_binop__1 v_Fnn var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:35.1-35.23 -/ +def proj_binop__0 : ∀ (var_x : binop_) , (Option binop_Inn) + | (.mk_binop__0 v_Inn var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:35.1-35.23 -/ +def proj_binop__1 : ∀ (var_x : binop_) , (Option binop_Fnn) + | (.mk_binop__1 v_Fnn var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:42.1-42.24 -/ +inductive testop_Inn : Type where + | EQZ : testop_Inn +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:42.1-42.24 -/ +inductive testop_ : Type where + | mk_testop__0 (v_Inn : Inn) (var_x : testop_Inn) : testop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:42.8-42.16 -/ +inductive wf_testop_ : numtype -> testop_ -> Prop where + | testop__case_0 : forall (v_numtype : numtype) (v_Inn : Inn) (var_x : testop_Inn), + (v_numtype == (numtype_addrtype v_Inn)) -> + wf_testop_ v_numtype (.mk_testop__0 v_Inn var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:42.1-42.24 -/ +def proj_testop__0 : ∀ (var_x : testop_) , testop_Inn + | (.mk_testop__0 v_Inn var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:46.1-46.23 -/ +inductive relop_Inn : Type where + | EQ : relop_Inn + | NE : relop_Inn + | LT (v_sx : sx) : relop_Inn + | GT (v_sx : sx) : relop_Inn + | LE (v_sx : sx) : relop_Inn + | GE (v_sx : sx) : relop_Inn +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:46.1-46.23 -/ +inductive relop_Fnn : Type where + | EQ : relop_Fnn + | NE : relop_Fnn + | LT : relop_Fnn + | GT : relop_Fnn + | LE : relop_Fnn + | GE : relop_Fnn +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:46.1-46.23 -/ +inductive relop_ : Type where + | mk_relop__0 (v_Inn : Inn) (var_x : relop_Inn) : relop_ + | mk_relop__1 (v_Fnn : Fnn) (var_x : relop_Fnn) : relop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:46.8-46.15 -/ +inductive wf_relop_ : numtype -> relop_ -> Prop where + | relop__case_0 : forall (v_numtype : numtype) (v_Inn : Inn) (var_x : relop_Inn), + (v_numtype == (numtype_addrtype v_Inn)) -> + wf_relop_ v_numtype (.mk_relop__0 v_Inn var_x) + | relop__case_1 : forall (v_numtype : numtype) (v_Fnn : Fnn) (var_x : relop_Fnn), + (v_numtype == (numtype_Fnn v_Fnn)) -> + wf_relop_ v_numtype (.mk_relop__1 v_Fnn var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:46.1-46.23 -/ +def proj_relop__0 : ∀ (var_x : relop_) , (Option relop_Inn) + | (.mk_relop__0 v_Inn var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:46.1-46.23 -/ +def proj_relop__1 : ∀ (var_x : relop_) , (Option relop_Fnn) + | (.mk_relop__1 v_Fnn var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +inductive cvtop__Inn_1_Inn_2 : Type where + | EXTEND (v_sx : sx) : cvtop__Inn_1_Inn_2 + | WRAP : cvtop__Inn_1_Inn_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.8-55.16 -/ +inductive wf_cvtop__Inn_1_Inn_2 : Inn -> Inn -> cvtop__Inn_1_Inn_2 -> Prop where + | cvtop__Inn_1_Inn_2_case_0 : forall (Inn_1 : Inn) (Inn_2 : Inn) (v_sx : sx), + ((sizenn1 (numtype_addrtype Inn_1)) < (sizenn2 (numtype_addrtype Inn_2))) -> + wf_cvtop__Inn_1_Inn_2 Inn_1 Inn_2 (.EXTEND v_sx) + | cvtop__Inn_1_Inn_2_case_1 : forall (Inn_1 : Inn) (Inn_2 : Inn), + ((sizenn1 (numtype_addrtype Inn_1)) > (sizenn2 (numtype_addrtype Inn_2))) -> + wf_cvtop__Inn_1_Inn_2 Inn_1 Inn_2 .WRAP + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +inductive cvtop__Inn_1_Fnn_2 : Type where + | CONVERT (v_sx : sx) : cvtop__Inn_1_Fnn_2 + | REINTERPRET : cvtop__Inn_1_Fnn_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.8-55.16 -/ +inductive wf_cvtop__Inn_1_Fnn_2 : Inn -> Fnn -> cvtop__Inn_1_Fnn_2 -> Prop where + | cvtop__Inn_1_Fnn_2_case_0 : forall (Inn_1 : Inn) (Fnn_2 : Fnn) (v_sx : sx), wf_cvtop__Inn_1_Fnn_2 Inn_1 Fnn_2 (.CONVERT v_sx) + | cvtop__Inn_1_Fnn_2_case_1 : forall (Inn_1 : Inn) (Fnn_2 : Fnn), + ((sizenn1 (numtype_addrtype Inn_1)) == (sizenn2 (numtype_Fnn Fnn_2))) -> + wf_cvtop__Inn_1_Fnn_2 Inn_1 Fnn_2 .REINTERPRET + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +inductive cvtop__Fnn_1_Inn_2 : Type where + | TRUNC (v_sx : sx) : cvtop__Fnn_1_Inn_2 + | TRUNC_SAT (v_sx : sx) : cvtop__Fnn_1_Inn_2 + | REINTERPRET : cvtop__Fnn_1_Inn_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.8-55.16 -/ +inductive wf_cvtop__Fnn_1_Inn_2 : Fnn -> Inn -> cvtop__Fnn_1_Inn_2 -> Prop where + | cvtop__Fnn_1_Inn_2_case_0 : forall (Fnn_1 : Fnn) (Inn_2 : Inn) (v_sx : sx), wf_cvtop__Fnn_1_Inn_2 Fnn_1 Inn_2 (.TRUNC v_sx) + | cvtop__Fnn_1_Inn_2_case_1 : forall (Fnn_1 : Fnn) (Inn_2 : Inn) (v_sx : sx), wf_cvtop__Fnn_1_Inn_2 Fnn_1 Inn_2 (.TRUNC_SAT v_sx) + | cvtop__Fnn_1_Inn_2_case_2 : forall (Fnn_1 : Fnn) (Inn_2 : Inn), + ((sizenn1 (numtype_Fnn Fnn_1)) == (sizenn2 (numtype_addrtype Inn_2))) -> + wf_cvtop__Fnn_1_Inn_2 Fnn_1 Inn_2 .REINTERPRET + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +inductive cvtop__Fnn_1_Fnn_2 : Type where + | PROMOTE : cvtop__Fnn_1_Fnn_2 + | DEMOTE : cvtop__Fnn_1_Fnn_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.8-55.16 -/ +inductive wf_cvtop__Fnn_1_Fnn_2 : Fnn -> Fnn -> cvtop__Fnn_1_Fnn_2 -> Prop where + | cvtop__Fnn_1_Fnn_2_case_0 : forall (Fnn_1 : Fnn) (Fnn_2 : Fnn), + ((sizenn1 (numtype_Fnn Fnn_1)) < (sizenn2 (numtype_Fnn Fnn_2))) -> + wf_cvtop__Fnn_1_Fnn_2 Fnn_1 Fnn_2 .PROMOTE + | cvtop__Fnn_1_Fnn_2_case_1 : forall (Fnn_1 : Fnn) (Fnn_2 : Fnn), + ((sizenn1 (numtype_Fnn Fnn_1)) > (sizenn2 (numtype_Fnn Fnn_2))) -> + wf_cvtop__Fnn_1_Fnn_2 Fnn_1 Fnn_2 .DEMOTE + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +inductive cvtop__ : Type where + | mk_cvtop___0 (Inn_1 : Inn) (Inn_2 : Inn) (var_x : cvtop__Inn_1_Inn_2) : cvtop__ + | mk_cvtop___1 (Inn_1 : Inn) (Fnn_2 : Fnn) (var_x : cvtop__Inn_1_Fnn_2) : cvtop__ + | mk_cvtop___2 (Fnn_1 : Fnn) (Inn_2 : Inn) (var_x : cvtop__Fnn_1_Inn_2) : cvtop__ + | mk_cvtop___3 (Fnn_1 : Fnn) (Fnn_2 : Fnn) (var_x : cvtop__Fnn_1_Fnn_2) : cvtop__ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.8-55.16 -/ +inductive wf_cvtop__ : numtype -> numtype -> cvtop__ -> Prop where + | cvtop___case_0 : forall (numtype_1 : numtype) (numtype_2 : numtype) (Inn_1 : Inn) (Inn_2 : Inn) (var_x : cvtop__Inn_1_Inn_2), + (wf_cvtop__Inn_1_Inn_2 Inn_1 Inn_2 var_x) -> + (numtype_1 == (numtype_addrtype Inn_1)) -> + (numtype_2 == (numtype_addrtype Inn_2)) -> + wf_cvtop__ numtype_1 numtype_2 (.mk_cvtop___0 Inn_1 Inn_2 var_x) + | cvtop___case_1 : forall (numtype_1 : numtype) (numtype_2 : numtype) (Inn_1 : Inn) (Fnn_2 : Fnn) (var_x : cvtop__Inn_1_Fnn_2), + (wf_cvtop__Inn_1_Fnn_2 Inn_1 Fnn_2 var_x) -> + (numtype_1 == (numtype_addrtype Inn_1)) -> + (numtype_2 == (numtype_Fnn Fnn_2)) -> + wf_cvtop__ numtype_1 numtype_2 (.mk_cvtop___1 Inn_1 Fnn_2 var_x) + | cvtop___case_2 : forall (numtype_1 : numtype) (numtype_2 : numtype) (Fnn_1 : Fnn) (Inn_2 : Inn) (var_x : cvtop__Fnn_1_Inn_2), + (wf_cvtop__Fnn_1_Inn_2 Fnn_1 Inn_2 var_x) -> + (numtype_1 == (numtype_Fnn Fnn_1)) -> + (numtype_2 == (numtype_addrtype Inn_2)) -> + wf_cvtop__ numtype_1 numtype_2 (.mk_cvtop___2 Fnn_1 Inn_2 var_x) + | cvtop___case_3 : forall (numtype_1 : numtype) (numtype_2 : numtype) (Fnn_1 : Fnn) (Fnn_2 : Fnn) (var_x : cvtop__Fnn_1_Fnn_2), + (wf_cvtop__Fnn_1_Fnn_2 Fnn_1 Fnn_2 var_x) -> + (numtype_1 == (numtype_Fnn Fnn_1)) -> + (numtype_2 == (numtype_Fnn Fnn_2)) -> + wf_cvtop__ numtype_1 numtype_2 (.mk_cvtop___3 Fnn_1 Fnn_2 var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +def proj_cvtop___0 : ∀ (var_x : cvtop__) , (Option cvtop__Inn_1_Inn_2) + | (.mk_cvtop___0 Inn_1 Inn_2 var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +def proj_cvtop___1 : ∀ (var_x : cvtop__) , (Option cvtop__Inn_1_Fnn_2) + | (.mk_cvtop___1 Inn_1 Fnn_2 var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +def proj_cvtop___2 : ∀ (var_x : cvtop__) , (Option cvtop__Fnn_1_Inn_2) + | (.mk_cvtop___2 Fnn_1 Inn_2 var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:55.1-55.37 -/ +def proj_cvtop___3 : ∀ (var_x : cvtop__) , (Option cvtop__Fnn_1_Fnn_2) + | (.mk_cvtop___3 Fnn_1 Fnn_2 var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:73.1-73.60 -/ +inductive dim : Type where + | mk_dim (i : Nat) : dim +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:73.1-73.60 -/ +def proj_dim_0 : ∀ (x : dim) , Nat + | (.mk_dim v_num_0) => + (v_num_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:73.8-73.11 -/ +inductive wf_dim : dim -> Prop where + | dim_case_0 : forall (i : Nat), + (((((i == 1) || (i == 2)) || (i == 4)) || (i == 8)) || (i == 16)) -> + wf_dim (.mk_dim i) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:74.1-75.40 -/ +inductive shape : Type where + | X (v_lanetype : lanetype) (v_dim : dim) : shape +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:74.8-74.13 -/ +inductive wf_shape : shape -> Prop where + | shape_case_0 : forall (v_lanetype : lanetype) (v_dim : dim), + (wf_dim v_dim) -> + (((lsize v_lanetype) * (proj_dim_0 v_dim)) == 128) -> + wf_shape (.X v_lanetype v_dim) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:78.1-78.43 -/ +def fun_dim : ∀ (v_shape : shape) , dim + | (.X v_Lnn (.mk_dim v_N)) => + (.mk_dim v_N) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:81.1-81.58 -/ +def fun_lanetype : ∀ (v_shape : shape) , lanetype + | (.X v_Lnn (.mk_dim v_N)) => + v_Lnn + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:84.1-84.57 -/ +def unpackshape : ∀ (v_shape : shape) , numtype + | (.X v_Lnn (.mk_dim v_N)) => + (lunpack v_Lnn) + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:88.1-88.78 -/ +inductive ishape : Type where + | mk_ishape (v_shape : shape) : ishape +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:88.1-88.78 -/ +def proj_ishape_0 : ∀ (x : ishape) , shape + | (.mk_ishape v_shape_0) => + (v_shape_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:88.8-88.14 -/ +inductive wf_ishape : ishape -> Prop where + | ishape_case_0 : forall (v_shape : shape) (v_Jnn : Jnn), + (wf_shape v_shape) -> + ((fun_lanetype v_shape) == (lanetype_Jnn v_Jnn)) -> + wf_ishape (.mk_ishape v_shape) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:89.1-89.77 -/ +inductive bshape : Type where + | mk_bshape (v_shape : shape) : bshape +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:89.1-89.77 -/ +def proj_bshape_0 : ∀ (x : bshape) , shape + | (.mk_bshape v_shape_0) => + (v_shape_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:89.8-89.14 -/ +inductive wf_bshape : bshape -> Prop where + | bshape_case_0 : forall (v_shape : shape), + (wf_shape v_shape) -> + ((fun_lanetype v_shape) == .I8) -> + wf_bshape (.mk_bshape v_shape) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:94.1-94.19 -/ +inductive zero : Type where + | ZERO : zero +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:95.1-95.25 -/ +inductive half : Type where + | LOW : half + | HIGH : half +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:97.1-97.41 -/ +inductive vvunop : Type where + | NOT : vvunop +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:98.1-98.62 -/ +inductive vvbinop : Type where + | AND : vvbinop + | ANDNOT : vvbinop + | OR : vvbinop + | XOR : vvbinop +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:99.1-99.49 -/ +inductive vvternop : Type where + | BITSELECT : vvternop +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:100.1-100.48 -/ +inductive vvtestop : Type where + | ANY_TRUE : vvtestop +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:102.1-102.42 -/ +inductive vunop_Jnn_M : Type where + | ABS : vunop_Jnn_M + | NEG : vunop_Jnn_M + | POPCNT : vunop_Jnn_M +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:102.8-102.15 -/ +inductive wf_vunop_Jnn_M : Jnn -> M -> vunop_Jnn_M -> Prop where + | vunop_Jnn_M_case_0 : forall (v_Jnn : Jnn) (v_M : M), wf_vunop_Jnn_M v_Jnn v_M .ABS + | vunop_Jnn_M_case_1 : forall (v_Jnn : Jnn) (v_M : M), wf_vunop_Jnn_M v_Jnn v_M .NEG + | vunop_Jnn_M_case_2 : forall (v_Jnn : Jnn) (v_M : M), + ((lsizenn (lanetype_Jnn v_Jnn)) == 8) -> + wf_vunop_Jnn_M v_Jnn v_M .POPCNT + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:102.1-102.42 -/ +inductive vunop_Fnn_M : Type where + | ABS : vunop_Fnn_M + | NEG : vunop_Fnn_M + | SQRT : vunop_Fnn_M + | CEIL : vunop_Fnn_M + | FLOOR : vunop_Fnn_M + | TRUNC : vunop_Fnn_M + | NEAREST : vunop_Fnn_M +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:102.1-102.42 -/ +inductive vunop_ : Type where + | mk_vunop__0 (v_Jnn : Jnn) (v_M : M) (var_x : vunop_Jnn_M) : vunop_ + | mk_vunop__1 (v_Fnn : Fnn) (v_M : M) (var_x : vunop_Fnn_M) : vunop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:102.8-102.15 -/ +inductive wf_vunop_ : shape -> vunop_ -> Prop where + | vunop__case_0 : forall (v_shape : shape) (v_Jnn : Jnn) (v_M : M) (var_x : vunop_Jnn_M), + (wf_vunop_Jnn_M v_Jnn v_M var_x) -> + (v_shape == (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) -> + wf_vunop_ v_shape (.mk_vunop__0 v_Jnn v_M var_x) + | vunop__case_1 : forall (v_shape : shape) (v_Fnn : Fnn) (v_M : M) (var_x : vunop_Fnn_M), + (v_shape == (.X (lanetype_Fnn v_Fnn) (.mk_dim v_M))) -> + wf_vunop_ v_shape (.mk_vunop__1 v_Fnn v_M var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:102.1-102.42 -/ +def proj_vunop__0 : ∀ (var_x : vunop_) , (Option vunop_Jnn_M) + | (.mk_vunop__0 v_Jnn v_M var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:102.1-102.42 -/ +def proj_vunop__1 : ∀ (var_x : vunop_) , (Option vunop_Fnn_M) + | (.mk_vunop__1 v_Fnn v_M var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:107.1-107.43 -/ +inductive vbinop_Jnn_M : Type where + | ADD : vbinop_Jnn_M + | SUB : vbinop_Jnn_M + | ADD_SAT (v_sx : sx) : vbinop_Jnn_M + | SUB_SAT (v_sx : sx) : vbinop_Jnn_M + | MUL : vbinop_Jnn_M + | AVGRU : vbinop_Jnn_M + | Q15MULR_SATS : vbinop_Jnn_M + | RELAXED_Q15MULRS : vbinop_Jnn_M + | MIN (v_sx : sx) : vbinop_Jnn_M + | MAX (v_sx : sx) : vbinop_Jnn_M +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:107.8-107.16 -/ +inductive wf_vbinop_Jnn_M : Jnn -> M -> vbinop_Jnn_M -> Prop where + | vbinop_Jnn_M_case_0 : forall (v_Jnn : Jnn) (v_M : M), wf_vbinop_Jnn_M v_Jnn v_M .ADD + | vbinop_Jnn_M_case_1 : forall (v_Jnn : Jnn) (v_M : M), wf_vbinop_Jnn_M v_Jnn v_M .SUB + | vbinop_Jnn_M_case_2 : forall (v_Jnn : Jnn) (v_M : M) (v_sx : sx), + ((lsizenn (lanetype_Jnn v_Jnn)) <= 16) -> + wf_vbinop_Jnn_M v_Jnn v_M (.ADD_SAT v_sx) + | vbinop_Jnn_M_case_3 : forall (v_Jnn : Jnn) (v_M : M) (v_sx : sx), + ((lsizenn (lanetype_Jnn v_Jnn)) <= 16) -> + wf_vbinop_Jnn_M v_Jnn v_M (.SUB_SAT v_sx) + | vbinop_Jnn_M_case_4 : forall (v_Jnn : Jnn) (v_M : M), + ((lsizenn (lanetype_Jnn v_Jnn)) >= 16) -> + wf_vbinop_Jnn_M v_Jnn v_M .MUL + | vbinop_Jnn_M_case_5 : forall (v_Jnn : Jnn) (v_M : M), + ((lsizenn (lanetype_Jnn v_Jnn)) <= 16) -> + wf_vbinop_Jnn_M v_Jnn v_M .AVGRU + | vbinop_Jnn_M_case_6 : forall (v_Jnn : Jnn) (v_M : M), + ((lsizenn (lanetype_Jnn v_Jnn)) == 16) -> + wf_vbinop_Jnn_M v_Jnn v_M .Q15MULR_SATS + | vbinop_Jnn_M_case_7 : forall (v_Jnn : Jnn) (v_M : M), + ((lsizenn (lanetype_Jnn v_Jnn)) == 16) -> + wf_vbinop_Jnn_M v_Jnn v_M .RELAXED_Q15MULRS + | vbinop_Jnn_M_case_8 : forall (v_Jnn : Jnn) (v_M : M) (v_sx : sx), + ((lsizenn (lanetype_Jnn v_Jnn)) <= 32) -> + wf_vbinop_Jnn_M v_Jnn v_M (.MIN v_sx) + | vbinop_Jnn_M_case_9 : forall (v_Jnn : Jnn) (v_M : M) (v_sx : sx), + ((lsizenn (lanetype_Jnn v_Jnn)) <= 32) -> + wf_vbinop_Jnn_M v_Jnn v_M (.MAX v_sx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:107.1-107.43 -/ +inductive vbinop_Fnn_M : Type where + | ADD : vbinop_Fnn_M + | SUB : vbinop_Fnn_M + | MUL : vbinop_Fnn_M + | DIV : vbinop_Fnn_M + | MIN : vbinop_Fnn_M + | MAX : vbinop_Fnn_M + | PMIN : vbinop_Fnn_M + | PMAX : vbinop_Fnn_M + | RELAXED_MIN : vbinop_Fnn_M + | RELAXED_MAX : vbinop_Fnn_M +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:107.1-107.43 -/ +inductive vbinop_ : Type where + | mk_vbinop__0 (v_Jnn : Jnn) (v_M : M) (var_x : vbinop_Jnn_M) : vbinop_ + | mk_vbinop__1 (v_Fnn : Fnn) (v_M : M) (var_x : vbinop_Fnn_M) : vbinop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:107.8-107.16 -/ +inductive wf_vbinop_ : shape -> vbinop_ -> Prop where + | vbinop__case_0 : forall (v_shape : shape) (v_Jnn : Jnn) (v_M : M) (var_x : vbinop_Jnn_M), + (wf_vbinop_Jnn_M v_Jnn v_M var_x) -> + (v_shape == (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) -> + wf_vbinop_ v_shape (.mk_vbinop__0 v_Jnn v_M var_x) + | vbinop__case_1 : forall (v_shape : shape) (v_Fnn : Fnn) (v_M : M) (var_x : vbinop_Fnn_M), + (v_shape == (.X (lanetype_Fnn v_Fnn) (.mk_dim v_M))) -> + wf_vbinop_ v_shape (.mk_vbinop__1 v_Fnn v_M var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:107.1-107.43 -/ +def proj_vbinop__0 : ∀ (var_x : vbinop_) , (Option vbinop_Jnn_M) + | (.mk_vbinop__0 v_Jnn v_M var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:107.1-107.43 -/ +def proj_vbinop__1 : ∀ (var_x : vbinop_) , (Option vbinop_Fnn_M) + | (.mk_vbinop__1 v_Fnn v_M var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:122.1-122.44 -/ +inductive vternop_Jnn_M : Type where + | RELAXED_LANESELECT : vternop_Jnn_M +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:122.1-122.44 -/ +inductive vternop_Fnn_M : Type where + | RELAXED_MADD : vternop_Fnn_M + | RELAXED_NMADD : vternop_Fnn_M +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:122.1-122.44 -/ +inductive vternop_ : Type where + | mk_vternop__0 (v_Jnn : Jnn) (v_M : M) (var_x : vternop_Jnn_M) : vternop_ + | mk_vternop__1 (v_Fnn : Fnn) (v_M : M) (var_x : vternop_Fnn_M) : vternop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:122.8-122.17 -/ +inductive wf_vternop_ : shape -> vternop_ -> Prop where + | vternop__case_0 : forall (v_shape : shape) (v_Jnn : Jnn) (v_M : M) (var_x : vternop_Jnn_M), + (v_shape == (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) -> + wf_vternop_ v_shape (.mk_vternop__0 v_Jnn v_M var_x) + | vternop__case_1 : forall (v_shape : shape) (v_Fnn : Fnn) (v_M : M) (var_x : vternop_Fnn_M), + (v_shape == (.X (lanetype_Fnn v_Fnn) (.mk_dim v_M))) -> + wf_vternop_ v_shape (.mk_vternop__1 v_Fnn v_M var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:122.1-122.44 -/ +def proj_vternop__0 : ∀ (var_x : vternop_) , (Option vternop_Jnn_M) + | (.mk_vternop__0 v_Jnn v_M var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:122.1-122.44 -/ +def proj_vternop__1 : ∀ (var_x : vternop_) , (Option vternop_Fnn_M) + | (.mk_vternop__1 v_Fnn v_M var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:126.1-126.44 -/ +inductive vtestop_Jnn_M : Type where + | ALL_TRUE : vtestop_Jnn_M +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:126.1-126.44 -/ +inductive vtestop_ : Type where + | mk_vtestop__0 (v_Jnn : Jnn) (v_M : M) (var_x : vtestop_Jnn_M) : vtestop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:126.8-126.17 -/ +inductive wf_vtestop_ : shape -> vtestop_ -> Prop where + | vtestop__case_0 : forall (v_shape : shape) (v_Jnn : Jnn) (v_M : M) (var_x : vtestop_Jnn_M), + (v_shape == (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) -> + wf_vtestop_ v_shape (.mk_vtestop__0 v_Jnn v_M var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:126.1-126.44 -/ +def proj_vtestop__0 : ∀ (var_x : vtestop_) , vtestop_Jnn_M + | (.mk_vtestop__0 v_Jnn v_M var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:130.1-130.43 -/ +inductive vrelop_Jnn_M : Type where + | EQ : vrelop_Jnn_M + | NE : vrelop_Jnn_M + | LT (v_sx : sx) : vrelop_Jnn_M + | GT (v_sx : sx) : vrelop_Jnn_M + | LE (v_sx : sx) : vrelop_Jnn_M + | GE (v_sx : sx) : vrelop_Jnn_M +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:130.8-130.16 -/ +inductive wf_vrelop_Jnn_M : Jnn -> M -> vrelop_Jnn_M -> Prop where + | vrelop_Jnn_M_case_0 : forall (v_Jnn : Jnn) (v_M : M), wf_vrelop_Jnn_M v_Jnn v_M .EQ + | vrelop_Jnn_M_case_1 : forall (v_Jnn : Jnn) (v_M : M), wf_vrelop_Jnn_M v_Jnn v_M .NE + | vrelop_Jnn_M_case_2 : forall (v_Jnn : Jnn) (v_M : M) (v_sx : sx), + (((lsizenn (lanetype_Jnn v_Jnn)) != 64) || (v_sx == .S)) -> + wf_vrelop_Jnn_M v_Jnn v_M (.LT v_sx) + | vrelop_Jnn_M_case_3 : forall (v_Jnn : Jnn) (v_M : M) (v_sx : sx), + (((lsizenn (lanetype_Jnn v_Jnn)) != 64) || (v_sx == .S)) -> + wf_vrelop_Jnn_M v_Jnn v_M (.GT v_sx) + | vrelop_Jnn_M_case_4 : forall (v_Jnn : Jnn) (v_M : M) (v_sx : sx), + (((lsizenn (lanetype_Jnn v_Jnn)) != 64) || (v_sx == .S)) -> + wf_vrelop_Jnn_M v_Jnn v_M (.LE v_sx) + | vrelop_Jnn_M_case_5 : forall (v_Jnn : Jnn) (v_M : M) (v_sx : sx), + (((lsizenn (lanetype_Jnn v_Jnn)) != 64) || (v_sx == .S)) -> + wf_vrelop_Jnn_M v_Jnn v_M (.GE v_sx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:130.1-130.43 -/ +inductive vrelop_Fnn_M : Type where + | EQ : vrelop_Fnn_M + | NE : vrelop_Fnn_M + | LT : vrelop_Fnn_M + | GT : vrelop_Fnn_M + | LE : vrelop_Fnn_M + | GE : vrelop_Fnn_M +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:130.1-130.43 -/ +inductive vrelop_ : Type where + | mk_vrelop__0 (v_Jnn : Jnn) (v_M : M) (var_x : vrelop_Jnn_M) : vrelop_ + | mk_vrelop__1 (v_Fnn : Fnn) (v_M : M) (var_x : vrelop_Fnn_M) : vrelop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:130.8-130.16 -/ +inductive wf_vrelop_ : shape -> vrelop_ -> Prop where + | vrelop__case_0 : forall (v_shape : shape) (v_Jnn : Jnn) (v_M : M) (var_x : vrelop_Jnn_M), + (wf_vrelop_Jnn_M v_Jnn v_M var_x) -> + (v_shape == (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) -> + wf_vrelop_ v_shape (.mk_vrelop__0 v_Jnn v_M var_x) + | vrelop__case_1 : forall (v_shape : shape) (v_Fnn : Fnn) (v_M : M) (var_x : vrelop_Fnn_M), + (v_shape == (.X (lanetype_Fnn v_Fnn) (.mk_dim v_M))) -> + wf_vrelop_ v_shape (.mk_vrelop__1 v_Fnn v_M var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:130.1-130.43 -/ +def proj_vrelop__0 : ∀ (var_x : vrelop_) , (Option vrelop_Jnn_M) + | (.mk_vrelop__0 v_Jnn v_M var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:130.1-130.43 -/ +def proj_vrelop__1 : ∀ (var_x : vrelop_) , (Option vrelop_Fnn_M) + | (.mk_vrelop__1 v_Fnn v_M var_x) => + (some var_x) + | var_x => + none + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:138.1-138.46 -/ +inductive vshiftop_Jnn_M : Type where + | SHL : vshiftop_Jnn_M + | SHR (v_sx : sx) : vshiftop_Jnn_M +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:138.1-138.46 -/ +inductive vshiftop_ : Type where + | mk_vshiftop__0 (v_Jnn : Jnn) (v_M : M) (var_x : vshiftop_Jnn_M) : vshiftop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:138.8-138.18 -/ +inductive wf_vshiftop_ : ishape -> vshiftop_ -> Prop where + | vshiftop__case_0 : forall (v_ishape : ishape) (v_Jnn : Jnn) (v_M : M) (var_x : vshiftop_Jnn_M), + (v_ishape == (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)))) -> + wf_vshiftop_ v_ishape (.mk_vshiftop__0 v_Jnn v_M var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:138.1-138.46 -/ +def proj_vshiftop__0 : ∀ (var_x : vshiftop_) , vshiftop_Jnn_M + | (.mk_vshiftop__0 v_Jnn v_M var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:141.1-141.47 -/ +inductive vswizzlop_M : Type where + | SWIZZLE : vswizzlop_M + | RELAXED_SWIZZLE : vswizzlop_M +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:141.1-141.47 -/ +inductive vswizzlop_ : Type where + | mk_vswizzlop__0 (v_M : M) (var_x : vswizzlop_M) : vswizzlop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:141.8-141.19 -/ +inductive wf_vswizzlop_ : bshape -> vswizzlop_ -> Prop where + | vswizzlop__case_0 : forall (v_bshape : bshape) (v_M : M) (var_x : vswizzlop_M), + (v_bshape == (.mk_bshape (.X .I8 (.mk_dim v_M)))) -> + wf_vswizzlop_ v_bshape (.mk_vswizzlop__0 v_M var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:141.1-141.47 -/ +def proj_vswizzlop__0 : ∀ (var_x : vswizzlop_) , vswizzlop_M + | (.mk_vswizzlop__0 v_M var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:144.1-144.59 -/ +inductive vextunop__Jnn_1_M_1_Jnn_2_M_2 : Type where + | EXTADD_PAIRWISE (v_sx : sx) : vextunop__Jnn_1_M_1_Jnn_2_M_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:144.8-144.19 -/ +inductive wf_vextunop__Jnn_1_M_1_Jnn_2_M_2 : Jnn -> M -> Jnn -> M -> vextunop__Jnn_1_M_1_Jnn_2_M_2 -> Prop where + | vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0 : forall (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (v_sx : sx), + ((16 <= (2 * (lsizenn1 (lanetype_Jnn Jnn_1)))) && (((2 * (lsizenn1 (lanetype_Jnn Jnn_1))) == (lsizenn2 (lanetype_Jnn Jnn_2))) && ((lsizenn2 (lanetype_Jnn Jnn_2)) <= 32))) -> + wf_vextunop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 (.EXTADD_PAIRWISE v_sx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:144.1-144.59 -/ +inductive vextunop__ : Type where + | mk_vextunop___0 (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) : vextunop__ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:144.8-144.19 -/ +inductive wf_vextunop__ : ishape -> ishape -> vextunop__ -> Prop where + | vextunop___case_0 : forall (ishape_1 : ishape) (ishape_2 : ishape) (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2), + (wf_vextunop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 var_x) -> + (ishape_1 == (.mk_ishape (.X (lanetype_Jnn Jnn_1) (.mk_dim M_1)))) -> + (ishape_2 == (.mk_ishape (.X (lanetype_Jnn Jnn_2) (.mk_dim M_2)))) -> + wf_vextunop__ ishape_1 ishape_2 (.mk_vextunop___0 Jnn_1 M_1 Jnn_2 M_2 var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:144.1-144.59 -/ +def proj_vextunop___0 : ∀ (var_x : vextunop__) , vextunop__Jnn_1_M_1_Jnn_2_M_2 + | (.mk_vextunop___0 Jnn_1 M_1 Jnn_2 M_2 var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:149.1-149.60 -/ +inductive vextbinop__Jnn_1_M_1_Jnn_2_M_2 : Type where + | EXTMUL (v_half : half) (v_sx : sx) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + | DOTS : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + | RELAXED_DOTS : vextbinop__Jnn_1_M_1_Jnn_2_M_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:149.8-149.20 -/ +inductive wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2 : Jnn -> M -> Jnn -> M -> vextbinop__Jnn_1_M_1_Jnn_2_M_2 -> Prop where + | vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0 : forall (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (v_half : half) (v_sx : sx), + (((2 * (lsizenn1 (lanetype_Jnn Jnn_1))) == (lsizenn2 (lanetype_Jnn Jnn_2))) && ((lsizenn2 (lanetype_Jnn Jnn_2)) >= 16)) -> + wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 (.EXTMUL v_half v_sx) + | vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1 : forall (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M), + (((2 * (lsizenn1 (lanetype_Jnn Jnn_1))) == (lsizenn2 (lanetype_Jnn Jnn_2))) && ((lsizenn2 (lanetype_Jnn Jnn_2)) == 32)) -> + wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 .DOTS + | vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2 : forall (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M), + (((2 * (lsizenn1 (lanetype_Jnn Jnn_1))) == (lsizenn2 (lanetype_Jnn Jnn_2))) && ((lsizenn2 (lanetype_Jnn Jnn_2)) == 16)) -> + wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 .RELAXED_DOTS + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:149.1-149.60 -/ +inductive vextbinop__ : Type where + | mk_vextbinop___0 (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) : vextbinop__ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:149.8-149.20 -/ +inductive wf_vextbinop__ : ishape -> ishape -> vextbinop__ -> Prop where + | vextbinop___case_0 : forall (ishape_1 : ishape) (ishape_2 : ishape) (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2), + (wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 var_x) -> + (ishape_1 == (.mk_ishape (.X (lanetype_Jnn Jnn_1) (.mk_dim M_1)))) -> + (ishape_2 == (.mk_ishape (.X (lanetype_Jnn Jnn_2) (.mk_dim M_2)))) -> + wf_vextbinop__ ishape_1 ishape_2 (.mk_vextbinop___0 Jnn_1 M_1 Jnn_2 M_2 var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:149.1-149.60 -/ +def proj_vextbinop___0 : ∀ (var_x : vextbinop__) , vextbinop__Jnn_1_M_1_Jnn_2_M_2 + | (.mk_vextbinop___0 Jnn_1 M_1 Jnn_2 M_2 var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:158.1-158.61 -/ +inductive vextternop__Jnn_1_M_1_Jnn_2_M_2 : Type where + | RELAXED_DOT_ADDS : vextternop__Jnn_1_M_1_Jnn_2_M_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:158.8-158.21 -/ +inductive wf_vextternop__Jnn_1_M_1_Jnn_2_M_2 : Jnn -> M -> Jnn -> M -> vextternop__Jnn_1_M_1_Jnn_2_M_2 -> Prop where + | vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0 : forall (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M), + (((4 * (lsizenn1 (lanetype_Jnn Jnn_1))) == (lsizenn2 (lanetype_Jnn Jnn_2))) && ((lsizenn2 (lanetype_Jnn Jnn_2)) == 32)) -> + wf_vextternop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 .RELAXED_DOT_ADDS + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:158.1-158.61 -/ +inductive vextternop__ : Type where + | mk_vextternop___0 (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) : vextternop__ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:158.8-158.21 -/ +inductive wf_vextternop__ : ishape -> ishape -> vextternop__ -> Prop where + | vextternop___case_0 : forall (ishape_1 : ishape) (ishape_2 : ishape) (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2), + (wf_vextternop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 var_x) -> + (ishape_1 == (.mk_ishape (.X (lanetype_Jnn Jnn_1) (.mk_dim M_1)))) -> + (ishape_2 == (.mk_ishape (.X (lanetype_Jnn Jnn_2) (.mk_dim M_2)))) -> + wf_vextternop__ ishape_1 ishape_2 (.mk_vextternop___0 Jnn_1 M_1 Jnn_2 M_2 var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:158.1-158.61 -/ +def proj_vextternop___0 : ∀ (var_x : vextternop__) , vextternop__Jnn_1_M_1_Jnn_2_M_2 + | (.mk_vextternop___0 Jnn_1 M_1 Jnn_2 M_2 var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +inductive vcvtop__Jnn_1_M_1_Jnn_2_M_2 : Type where + | EXTEND (v_half : half) (v_sx : sx) : vcvtop__Jnn_1_M_1_Jnn_2_M_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.8-163.17 -/ +inductive wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2 : Jnn -> M -> Jnn -> M -> vcvtop__Jnn_1_M_1_Jnn_2_M_2 -> Prop where + | vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0 : forall (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (v_half : half) (v_sx : sx), + ((lsizenn2 (lanetype_Jnn Jnn_2)) == (2 * (lsizenn1 (lanetype_Jnn Jnn_1)))) -> + wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 (.EXTEND v_half v_sx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +inductive vcvtop__Jnn_1_M_1_Fnn_2_M_2 : Type where + | CONVERT (half_opt : (Option half)) (v_sx : sx) : vcvtop__Jnn_1_M_1_Fnn_2_M_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.8-163.17 -/ +inductive wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2 : Jnn -> M -> Fnn -> M -> vcvtop__Jnn_1_M_1_Fnn_2_M_2 -> Prop where + | vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0 : forall (Jnn_1 : Jnn) (M_1 : M) (Fnn_2 : Fnn) (M_2 : M) (half_opt : (Option half)) (v_sx : sx), + (((((sizenn2 (numtype_Fnn Fnn_2)) == (lsizenn1 (lanetype_Jnn Jnn_1))) && ((lsizenn1 (lanetype_Jnn Jnn_1)) == 32)) && (half_opt == none)) || (((sizenn2 (numtype_Fnn Fnn_2)) == (2 * (lsizenn1 (lanetype_Jnn Jnn_1)))) && (half_opt == (some .LOW)))) -> + wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2 Jnn_1 M_1 Fnn_2 M_2 (.CONVERT half_opt v_sx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +inductive vcvtop__Fnn_1_M_1_Jnn_2_M_2 : Type where + | TRUNC_SAT (v_sx : sx) (zero_opt : (Option zero)) : vcvtop__Fnn_1_M_1_Jnn_2_M_2 + | RELAXED_TRUNC (v_sx : sx) (zero_opt : (Option zero)) : vcvtop__Fnn_1_M_1_Jnn_2_M_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.8-163.17 -/ +inductive wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2 : Fnn -> M -> Jnn -> M -> vcvtop__Fnn_1_M_1_Jnn_2_M_2 -> Prop where + | vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0 : forall (Fnn_1 : Fnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (v_sx : sx) (zero_opt : (Option zero)), + (((((sizenn1 (numtype_Fnn Fnn_1)) == (lsizenn2 (lanetype_Jnn Jnn_2))) && ((lsizenn2 (lanetype_Jnn Jnn_2)) == 32)) && (zero_opt == none)) || (((sizenn1 (numtype_Fnn Fnn_1)) == (2 * (lsizenn2 (lanetype_Jnn Jnn_2)))) && (zero_opt == (some .ZERO)))) -> + wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2 Fnn_1 M_1 Jnn_2 M_2 (.TRUNC_SAT v_sx zero_opt) + | vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1 : forall (Fnn_1 : Fnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (v_sx : sx) (zero_opt : (Option zero)), + (((((sizenn1 (numtype_Fnn Fnn_1)) == (lsizenn2 (lanetype_Jnn Jnn_2))) && ((lsizenn2 (lanetype_Jnn Jnn_2)) == 32)) && (zero_opt == none)) || (((sizenn1 (numtype_Fnn Fnn_1)) == (2 * (lsizenn2 (lanetype_Jnn Jnn_2)))) && (zero_opt == (some .ZERO)))) -> + wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2 Fnn_1 M_1 Jnn_2 M_2 (.RELAXED_TRUNC v_sx zero_opt) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +inductive vcvtop__Fnn_1_M_1_Fnn_2_M_2 : Type where + | DEMOTE (v_zero : zero) : vcvtop__Fnn_1_M_1_Fnn_2_M_2 + | PROMOTELOW : vcvtop__Fnn_1_M_1_Fnn_2_M_2 +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.8-163.17 -/ +inductive wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2 : Fnn -> M -> Fnn -> M -> vcvtop__Fnn_1_M_1_Fnn_2_M_2 -> Prop where + | vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0 : forall (Fnn_1 : Fnn) (M_1 : M) (Fnn_2 : Fnn) (M_2 : M) (v_zero : zero), + ((sizenn1 (numtype_Fnn Fnn_1)) == (2 * (sizenn2 (numtype_Fnn Fnn_2)))) -> + wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2 Fnn_1 M_1 Fnn_2 M_2 (.DEMOTE v_zero) + | vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1 : forall (Fnn_1 : Fnn) (M_1 : M) (Fnn_2 : Fnn) (M_2 : M), + ((2 * (sizenn1 (numtype_Fnn Fnn_1))) == (sizenn2 (numtype_Fnn Fnn_2))) -> + wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2 Fnn_1 M_1 Fnn_2 M_2 .PROMOTELOW + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +inductive vcvtop__ : Type where + | mk_vcvtop___0 (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) : vcvtop__ + | mk_vcvtop___1 (Jnn_1 : Jnn) (M_1 : M) (Fnn_2 : Fnn) (M_2 : M) (var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) : vcvtop__ + | mk_vcvtop___2 (Fnn_1 : Fnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) : vcvtop__ + | mk_vcvtop___3 (Fnn_1 : Fnn) (M_1 : M) (Fnn_2 : Fnn) (M_2 : M) (var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) : vcvtop__ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.8-163.17 -/ +inductive wf_vcvtop__ : shape -> shape -> vcvtop__ -> Prop where + | vcvtop___case_0 : forall (shape_1 : shape) (shape_2 : shape) (Jnn_1 : Jnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2), + (wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2 Jnn_1 M_1 Jnn_2 M_2 var_x) -> + (shape_1 == (.X (lanetype_Jnn Jnn_1) (.mk_dim M_1))) -> + (shape_2 == (.X (lanetype_Jnn Jnn_2) (.mk_dim M_2))) -> + wf_vcvtop__ shape_1 shape_2 (.mk_vcvtop___0 Jnn_1 M_1 Jnn_2 M_2 var_x) + | vcvtop___case_1 : forall (shape_1 : shape) (shape_2 : shape) (Jnn_1 : Jnn) (M_1 : M) (Fnn_2 : Fnn) (M_2 : M) (var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2), + (wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2 Jnn_1 M_1 Fnn_2 M_2 var_x) -> + (shape_1 == (.X (lanetype_Jnn Jnn_1) (.mk_dim M_1))) -> + (shape_2 == (.X (lanetype_Fnn Fnn_2) (.mk_dim M_2))) -> + wf_vcvtop__ shape_1 shape_2 (.mk_vcvtop___1 Jnn_1 M_1 Fnn_2 M_2 var_x) + | vcvtop___case_2 : forall (shape_1 : shape) (shape_2 : shape) (Fnn_1 : Fnn) (M_1 : M) (Jnn_2 : Jnn) (M_2 : M) (var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2), + (wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2 Fnn_1 M_1 Jnn_2 M_2 var_x) -> + (shape_1 == (.X (lanetype_Fnn Fnn_1) (.mk_dim M_1))) -> + (shape_2 == (.X (lanetype_Jnn Jnn_2) (.mk_dim M_2))) -> + wf_vcvtop__ shape_1 shape_2 (.mk_vcvtop___2 Fnn_1 M_1 Jnn_2 M_2 var_x) + | vcvtop___case_3 : forall (shape_1 : shape) (shape_2 : shape) (Fnn_1 : Fnn) (M_1 : M) (Fnn_2 : Fnn) (M_2 : M) (var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2), + (wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2 Fnn_1 M_1 Fnn_2 M_2 var_x) -> + (shape_1 == (.X (lanetype_Fnn Fnn_1) (.mk_dim M_1))) -> + (shape_2 == (.X (lanetype_Fnn Fnn_2) (.mk_dim M_2))) -> + wf_vcvtop__ shape_1 shape_2 (.mk_vcvtop___3 Fnn_1 M_1 Fnn_2 M_2 var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +def proj_vcvtop___0 : ∀ (var_x : vcvtop__) , (Option vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | (.mk_vcvtop___0 Jnn_1 M_1 Jnn_2 M_2 var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +def proj_vcvtop___1 : ∀ (var_x : vcvtop__) , (Option vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | (.mk_vcvtop___1 Jnn_1 M_1 Fnn_2 M_2 var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +def proj_vcvtop___2 : ∀ (var_x : vcvtop__) , (Option vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | (.mk_vcvtop___2 Fnn_1 M_1 Jnn_2 M_2 var_x) => + (some var_x) + | var_x => + none + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:163.1-163.55 -/ +def proj_vcvtop___3 : ∀ (var_x : vcvtop__) , (Option vcvtop__Fnn_1_M_1_Fnn_2_M_2) + | (.mk_vcvtop___3 Fnn_1 M_1 Fnn_2 M_2 var_x) => + (some var_x) + | var_x => + none + + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:187.1-187.69 -/ +structure memarg where MKmemarg :: + ALIGN : u32 + OFFSET : u64 +deriving Inhabited, BEq + +def _append_memarg (arg1 arg2 : (memarg)) : memarg where + ALIGN := arg1.ALIGN /- FIXME - Non-trivial append -/ + OFFSET := arg1.OFFSET /- FIXME - Non-trivial append -/ +instance : Append memarg where + append arg1 arg2 := _append_memarg arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:187.8-187.14 -/ +inductive wf_memarg : memarg -> Prop where + | memarg_case_ : forall (var_0 : u32) (var_1 : u64), + (wf_uN 32 var_0) -> + (wf_uN 64 var_1) -> + wf_memarg { ALIGN := var_0, OFFSET := var_1 } + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:191.1-191.24 -/ +inductive loadop_Inn : Type where + | mk_loadop_Inn (v_sz : sz) (v_sx : sx) : loadop_Inn +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:191.8-191.16 -/ +inductive wf_loadop_Inn : Inn -> loadop_Inn -> Prop where + | loadop_Inn_case_0 : forall (v_Inn : Inn) (v_sz : sz) (v_sx : sx), + (wf_sz v_sz) -> + ((proj_sz_0 v_sz) < (sizenn (numtype_addrtype v_Inn))) -> + wf_loadop_Inn v_Inn (.mk_loadop_Inn v_sz v_sx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:191.1-191.24 -/ +inductive loadop_ : Type where + | mk_loadop__0 (v_Inn : Inn) (var_x : loadop_Inn) : loadop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:191.8-191.16 -/ +inductive wf_loadop_ : numtype -> loadop_ -> Prop where + | loadop__case_0 : forall (v_numtype : numtype) (v_Inn : Inn) (var_x : loadop_Inn), + (wf_loadop_Inn v_Inn var_x) -> + (v_numtype == (numtype_addrtype v_Inn)) -> + wf_loadop_ v_numtype (.mk_loadop__0 v_Inn var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:191.1-191.24 -/ +def proj_loadop__0 : ∀ (var_x : loadop_) , loadop_Inn + | (.mk_loadop__0 v_Inn var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:194.1-194.25 -/ +inductive storeop_Inn : Type where + | mk_storeop_Inn (v_sz : sz) : storeop_Inn +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:194.8-194.17 -/ +inductive wf_storeop_Inn : Inn -> storeop_Inn -> Prop where + | storeop_Inn_case_0 : forall (v_Inn : Inn) (v_sz : sz), + (wf_sz v_sz) -> + ((proj_sz_0 v_sz) < (sizenn (numtype_addrtype v_Inn))) -> + wf_storeop_Inn v_Inn (.mk_storeop_Inn v_sz) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:194.1-194.25 -/ +inductive storeop_ : Type where + | mk_storeop__0 (v_Inn : Inn) (var_x : storeop_Inn) : storeop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:194.8-194.17 -/ +inductive wf_storeop_ : numtype -> storeop_ -> Prop where + | storeop__case_0 : forall (v_numtype : numtype) (v_Inn : Inn) (var_x : storeop_Inn), + (wf_storeop_Inn v_Inn var_x) -> + (v_numtype == (numtype_addrtype v_Inn)) -> + wf_storeop_ v_numtype (.mk_storeop__0 v_Inn var_x) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:194.1-194.25 -/ +def proj_storeop__0 : ∀ (var_x : storeop_) , storeop_Inn + | (.mk_storeop__0 v_Inn var_x) => + var_x + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:197.1-200.59 -/ +inductive vloadop_ : Type where + | SHAPEX_ (v_sz : sz) (v_M : M) (v_sx : sx) : vloadop_ + | SPLAT (v_sz : sz) : vloadop_ + | ZERO (v_sz : sz) : vloadop_ +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:197.8-197.17 -/ +inductive wf_vloadop_ : vectype -> vloadop_ -> Prop where + | vloadop__case_0 : forall (v_vectype : vectype) (v_sz : sz) (v_M : M) (v_sx : sx), + (wf_sz v_sz) -> + ((((proj_sz_0 v_sz) * v_M) : Nat) == (((vsize v_vectype) : Nat) / (2 : Nat))) -> + wf_vloadop_ v_vectype (.SHAPEX_ v_sz v_M v_sx) + | vloadop__case_1 : forall (v_vectype : vectype) (v_sz : sz), + (wf_sz v_sz) -> + wf_vloadop_ v_vectype (.SPLAT v_sz) + | vloadop__case_2 : forall (v_vectype : vectype) (v_sz : sz), + (wf_sz v_sz) -> + ((proj_sz_0 v_sz) >= 32) -> + wf_vloadop_ v_vectype (.ZERO v_sz) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:205.1-207.17 -/ +inductive blocktype : Type where + | _RESULT (valtype_opt : (Option valtype)) : blocktype + | _IDX (v_typeidx : typeidx) : blocktype +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:205.8-205.17 -/ +inductive wf_blocktype : blocktype -> Prop where + | blocktype_case_0 : forall (valtype_opt : (Option valtype)), + Forall (fun (v_valtype : valtype) => (wf_valtype v_valtype)) (Option.toList valtype_opt) -> + wf_blocktype (._RESULT valtype_opt) + | blocktype_case_1 : forall (v_typeidx : typeidx), + (wf_uN 32 v_typeidx) -> + wf_blocktype (._IDX v_typeidx) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:7.1-7.39 -/ +abbrev addr : Type := Nat + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:16.1-16.51 -/ +abbrev arrayaddr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:17.1-17.53 -/ +abbrev exnaddr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:12.1-12.53 -/ +abbrev funcaddr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:18.1-18.49 -/ +abbrev hostaddr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:15.1-15.56 -/ +abbrev structaddr : Type := addr + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 -/ +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 -/ +inductive addrref : Type where + | REF_I31_NUM (v_u31 : u31) : addrref + | REF_STRUCT_ADDR (v_structaddr : structaddr) : addrref + | REF_ARRAY_ADDR (v_arrayaddr : arrayaddr) : addrref + | REF_FUNC_ADDR (v_funcaddr : funcaddr) : addrref + | REF_EXN_ADDR (v_exnaddr : exnaddr) : addrref + | REF_HOST_ADDR (v_hostaddr : hostaddr) : addrref + | REF_EXTERN (v_addrref : addrref) : addrref +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:255.1-259.27 -/ +inductive «catch» : Type where + | CATCH (v_tagidx : tagidx) (v_labelidx : labelidx) : «catch» + | CATCH_REF (v_tagidx : tagidx) (v_labelidx : labelidx) : «catch» + | CATCH_ALL (v_labelidx : labelidx) : «catch» + | CATCH_ALL_REF (v_labelidx : labelidx) : «catch» +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:255.8-255.13 -/ +inductive wf_catch : «catch» -> Prop where + | catch_case_0 : forall (v_tagidx : tagidx) (v_labelidx : labelidx), + (wf_uN 32 v_tagidx) -> + (wf_uN 32 v_labelidx) -> + wf_catch (.CATCH v_tagidx v_labelidx) + | catch_case_1 : forall (v_tagidx : tagidx) (v_labelidx : labelidx), + (wf_uN 32 v_tagidx) -> + (wf_uN 32 v_labelidx) -> + wf_catch (.CATCH_REF v_tagidx v_labelidx) + | catch_case_2 : forall (v_labelidx : labelidx), + (wf_uN 32 v_labelidx) -> + wf_catch (.CATCH_ALL v_labelidx) + | catch_case_3 : forall (v_labelidx : labelidx), + (wf_uN 32 v_labelidx) -> + wf_catch (.CATCH_ALL_REF v_labelidx) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:13.1-13.49 -/ +abbrev dataaddr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:14.1-14.49 -/ +abbrev elemaddr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:9.1-9.53 -/ +abbrev globaladdr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:10.1-10.50 -/ +abbrev memaddr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:11.1-11.51 -/ +abbrev tableaddr : Type := addr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:8.1-8.47 -/ +abbrev tagaddr : Type := addr + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:20.1-21.84 -/ +inductive externaddr : Type where + | TAG (v_tagaddr : tagaddr) : externaddr + | GLOBAL (v_globaladdr : globaladdr) : externaddr + | MEM (v_memaddr : memaddr) : externaddr + | TABLE (v_tableaddr : tableaddr) : externaddr + | FUNC (v_funcaddr : funcaddr) : externaddr +deriving Inhabited, BEq + + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:84.1-85.33 -/ +structure exportinst where MKexportinst :: + NAME : name + ADDR : externaddr +deriving Inhabited, BEq + +def _append_exportinst (arg1 arg2 : (exportinst)) : exportinst where + NAME := arg1.NAME /- FIXME - Non-trivial append -/ + ADDR := arg1.ADDR /- FIXME - Non-trivial append -/ +instance : Append exportinst where + append arg1 arg2 := _append_exportinst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:84.8-84.18 -/ +inductive wf_exportinst : exportinst -> Prop where + | exportinst_case_ : forall (var_0 : name) (var_1 : externaddr), + (wf_name var_0) -> + wf_exportinst { NAME := var_0, ADDR := var_1 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:104.1-113.26 -/ +structure moduleinst where MKmoduleinst :: + TYPES : (List deftype) + TAGS : (List tagaddr) + GLOBALS : (List globaladdr) + MEMS : (List memaddr) + TABLES : (List tableaddr) + FUNCS : (List funcaddr) + DATAS : (List dataaddr) + ELEMS : (List elemaddr) + EXPORTS : (List exportinst) +deriving Inhabited, BEq + +def _append_moduleinst (arg1 arg2 : (moduleinst)) : moduleinst where + TYPES := arg1.TYPES ++ arg2.TYPES + TAGS := arg1.TAGS ++ arg2.TAGS + GLOBALS := arg1.GLOBALS ++ arg2.GLOBALS + MEMS := arg1.MEMS ++ arg2.MEMS + TABLES := arg1.TABLES ++ arg2.TABLES + FUNCS := arg1.FUNCS ++ arg2.FUNCS + DATAS := arg1.DATAS ++ arg2.DATAS + ELEMS := arg1.ELEMS ++ arg2.ELEMS + EXPORTS := arg1.EXPORTS ++ arg2.EXPORTS +instance : Append moduleinst where + append arg1 arg2 := _append_moduleinst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:104.8-104.18 -/ +inductive wf_moduleinst : moduleinst -> Prop where + | moduleinst_case_ : forall (var_0 : (List deftype)) (var_1 : (List tagaddr)) (var_2 : (List globaladdr)) (var_3 : (List memaddr)) (var_4 : (List tableaddr)) (var_5 : (List funcaddr)) (var_6 : (List dataaddr)) (var_7 : (List elemaddr)) (var_8 : (List exportinst)), + Forall (fun (var_8 : exportinst) => (wf_exportinst var_8)) var_8 -> + wf_moduleinst { TYPES := var_0, TAGS := var_1, GLOBALS := var_2, MEMS := var_3, TABLES := var_4, FUNCS := var_5, DATAS := var_6, ELEMS := var_7, EXPORTS := var_8 } + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:48.1-49.20 -/ +inductive val : Type where + | CONST (v_numtype : numtype) (v_num_ : num_) : val + | VCONST (v_vectype : vectype) (v_vec_ : vec_) : val + | REF_NULL (v_heaptype : heaptype) : val + | REF_I31_NUM (v_u31 : u31) : val + | REF_STRUCT_ADDR (v_structaddr : structaddr) : val + | REF_ARRAY_ADDR (v_arrayaddr : arrayaddr) : val + | REF_FUNC_ADDR (v_funcaddr : funcaddr) : val + | REF_EXN_ADDR (v_exnaddr : exnaddr) : val + | REF_HOST_ADDR (v_hostaddr : hostaddr) : val + | REF_EXTERN (v_addrref : addrref) : val +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:48.8-48.11 -/ +inductive wf_val : val -> Prop where + | val_case_0 : forall (v_numtype : numtype) (v_num_ : num_), + (wf_num_ v_numtype v_num_) -> + wf_val (.CONST v_numtype v_num_) + | val_case_1 : forall (v_vectype : vectype) (v_vec_ : vec_), + (wf_uN (vsize v_vectype) v_vec_) -> + wf_val (.VCONST v_vectype v_vec_) + | val_case_2 : forall (v_heaptype : heaptype), + (wf_heaptype v_heaptype) -> + wf_val (.REF_NULL v_heaptype) + | val_case_3 : forall (v_u31 : u31), + (wf_uN 31 v_u31) -> + wf_val (.REF_I31_NUM v_u31) + | val_case_4 : forall (v_structaddr : structaddr), wf_val (.REF_STRUCT_ADDR v_structaddr) + | val_case_5 : forall (v_arrayaddr : arrayaddr), wf_val (.REF_ARRAY_ADDR v_arrayaddr) + | val_case_6 : forall (v_funcaddr : funcaddr), wf_val (.REF_FUNC_ADDR v_funcaddr) + | val_case_7 : forall (v_exnaddr : exnaddr), wf_val (.REF_EXN_ADDR v_exnaddr) + | val_case_8 : forall (v_hostaddr : hostaddr), wf_val (.REF_HOST_ADDR v_hostaddr) + | val_case_9 : forall (v_addrref : addrref), + (wf_addrref v_addrref) -> + wf_val (.REF_EXTERN v_addrref) + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:130.1-131.40 -/ +structure frame where MKframe :: + LOCALS : (List (Option val)) + MODULE : moduleinst +deriving Inhabited, BEq + +def _append_frame (arg1 arg2 : (frame)) : frame where + LOCALS := arg1.LOCALS ++ arg2.LOCALS + MODULE := arg1.MODULE ++ arg2.MODULE +instance : Append frame where + append arg1 arg2 := _append_frame arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:130.8-130.13 -/ +inductive wf_frame : frame -> Prop where + | frame_case_ : forall (var_0 : (List (Option val))) (var_1 : moduleinst), + Forall (fun (var_0 : (Option val)) => Forall (fun (var_0 : val) => (wf_val var_0)) (Option.toList var_0)) var_0 -> + (wf_moduleinst var_1) -> + wf_frame { LOCALS := var_0, MODULE := var_1 } + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 -/ +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 -/ +inductive instr : Type where + | NOP : instr + | UNREACHABLE : instr + | DROP : instr + | SELECT (valtype_lst_opt : (Option (List valtype))) : instr + | BLOCK (v_blocktype : blocktype) (instr_lst : (List instr)) : instr + | LOOP (v_blocktype : blocktype) (instr_lst : (List instr)) : instr + | IFELSE (v_blocktype : blocktype) (instr_lst : (List instr)) (_ : (List instr)) : instr + | BR (v_labelidx : labelidx) : instr + | BR_IF (v_labelidx : labelidx) : instr + | BR_TABLE (labelidx_lst : (List labelidx)) (_ : labelidx) : instr + | BR_ON_NULL (v_labelidx : labelidx) : instr + | BR_ON_NON_NULL (v_labelidx : labelidx) : instr + | BR_ON_CAST (v_labelidx : labelidx) (v_reftype : reftype) (_ : reftype) : instr + | BR_ON_CAST_FAIL (v_labelidx : labelidx) (v_reftype : reftype) (_ : reftype) : instr + | CALL (v_funcidx : funcidx) : instr + | CALL_REF (v_typeuse : typeuse) : instr + | CALL_INDIRECT (v_tableidx : tableidx) (v_typeuse : typeuse) : instr + | RETURN : instr + | RETURN_CALL (v_funcidx : funcidx) : instr + | RETURN_CALL_REF (v_typeuse : typeuse) : instr + | RETURN_CALL_INDIRECT (v_tableidx : tableidx) (v_typeuse : typeuse) : instr + | THROW (v_tagidx : tagidx) : instr + | THROW_REF : instr + | TRY_TABLE (v_blocktype : blocktype) (v_list : (list «catch»)) (instr_lst : (List instr)) : instr + | LOCAL_GET (v_localidx : localidx) : instr + | LOCAL_SET (v_localidx : localidx) : instr + | LOCAL_TEE (v_localidx : localidx) : instr + | GLOBAL_GET (v_globalidx : globalidx) : instr + | GLOBAL_SET (v_globalidx : globalidx) : instr + | TABLE_GET (v_tableidx : tableidx) : instr + | TABLE_SET (v_tableidx : tableidx) : instr + | TABLE_SIZE (v_tableidx : tableidx) : instr + | TABLE_GROW (v_tableidx : tableidx) : instr + | TABLE_FILL (v_tableidx : tableidx) : instr + | TABLE_COPY (v_tableidx : tableidx) (_ : tableidx) : instr + | TABLE_INIT (v_tableidx : tableidx) (v_elemidx : elemidx) : instr + | ELEM_DROP (v_elemidx : elemidx) : instr + | LOAD (v_numtype : numtype) (loadop__opt : (Option loadop_)) (v_memidx : memidx) (v_memarg : memarg) : instr + | STORE (v_numtype : numtype) (storeop__opt : (Option storeop_)) (v_memidx : memidx) (v_memarg : memarg) : instr + | VLOAD (v_vectype : vectype) (vloadop__opt : (Option vloadop_)) (v_memidx : memidx) (v_memarg : memarg) : instr + | VLOAD_LANE (v_vectype : vectype) (v_sz : sz) (v_memidx : memidx) (v_memarg : memarg) (v_laneidx : laneidx) : instr + | VSTORE (v_vectype : vectype) (v_memidx : memidx) (v_memarg : memarg) : instr + | VSTORE_LANE (v_vectype : vectype) (v_sz : sz) (v_memidx : memidx) (v_memarg : memarg) (v_laneidx : laneidx) : instr + | MEMORY_SIZE (v_memidx : memidx) : instr + | MEMORY_GROW (v_memidx : memidx) : instr + | MEMORY_FILL (v_memidx : memidx) : instr + | MEMORY_COPY (v_memidx : memidx) (_ : memidx) : instr + | MEMORY_INIT (v_memidx : memidx) (v_dataidx : dataidx) : instr + | DATA_DROP (v_dataidx : dataidx) : instr + | REF_NULL (v_heaptype : heaptype) : instr + | REF_IS_NULL : instr + | REF_AS_NON_NULL : instr + | REF_EQ : instr + | REF_TEST (v_reftype : reftype) : instr + | REF_CAST (v_reftype : reftype) : instr + | REF_FUNC (v_funcidx : funcidx) : instr + | REF_I31 : instr + | I31_GET (v_sx : sx) : instr + | STRUCT_NEW (v_typeidx : typeidx) : instr + | STRUCT_NEW_DEFAULT (v_typeidx : typeidx) : instr + | STRUCT_GET (sx_opt : (Option sx)) (v_typeidx : typeidx) (v_u32 : u32) : instr + | STRUCT_SET (v_typeidx : typeidx) (v_u32 : u32) : instr + | ARRAY_NEW (v_typeidx : typeidx) : instr + | ARRAY_NEW_DEFAULT (v_typeidx : typeidx) : instr + | ARRAY_NEW_FIXED (v_typeidx : typeidx) (v_u32 : u32) : instr + | ARRAY_NEW_DATA (v_typeidx : typeidx) (v_dataidx : dataidx) : instr + | ARRAY_NEW_ELEM (v_typeidx : typeidx) (v_elemidx : elemidx) : instr + | ARRAY_GET (sx_opt : (Option sx)) (v_typeidx : typeidx) : instr + | ARRAY_SET (v_typeidx : typeidx) : instr + | ARRAY_LEN : instr + | ARRAY_FILL (v_typeidx : typeidx) : instr + | ARRAY_COPY (v_typeidx : typeidx) (_ : typeidx) : instr + | ARRAY_INIT_DATA (v_typeidx : typeidx) (v_dataidx : dataidx) : instr + | ARRAY_INIT_ELEM (v_typeidx : typeidx) (v_elemidx : elemidx) : instr + | EXTERN_CONVERT_ANY : instr + | ANY_CONVERT_EXTERN : instr + | CONST (v_numtype : numtype) (v_num_ : num_) : instr + | UNOP (v_numtype : numtype) (v_unop_ : unop_) : instr + | BINOP (v_numtype : numtype) (v_binop_ : binop_) : instr + | TESTOP (v_numtype : numtype) (v_testop_ : testop_) : instr + | RELOP (v_numtype : numtype) (v_relop_ : relop_) : instr + | CVTOP (numtype_1 : numtype) (numtype_2 : numtype) (v_cvtop__ : cvtop__) : instr + | VCONST (v_vectype : vectype) (v_vec_ : vec_) : instr + | VVUNOP (v_vectype : vectype) (v_vvunop : vvunop) : instr + | VVBINOP (v_vectype : vectype) (v_vvbinop : vvbinop) : instr + | VVTERNOP (v_vectype : vectype) (v_vvternop : vvternop) : instr + | VVTESTOP (v_vectype : vectype) (v_vvtestop : vvtestop) : instr + | VUNOP (v_shape : shape) (v_vunop_ : vunop_) : instr + | VBINOP (v_shape : shape) (v_vbinop_ : vbinop_) : instr + | VTERNOP (v_shape : shape) (v_vternop_ : vternop_) : instr + | VTESTOP (v_shape : shape) (v_vtestop_ : vtestop_) : instr + | VRELOP (v_shape : shape) (v_vrelop_ : vrelop_) : instr + | VSHIFTOP (v_ishape : ishape) (v_vshiftop_ : vshiftop_) : instr + | VBITMASK (v_ishape : ishape) : instr + | VSWIZZLOP (v_bshape : bshape) (v_vswizzlop_ : vswizzlop_) : instr + | VSHUFFLE (v_bshape : bshape) (laneidx_lst : (List laneidx)) : instr + | VEXTUNOP (ishape_1 : ishape) (ishape_2 : ishape) (v_vextunop__ : vextunop__) : instr + | VEXTBINOP (ishape_1 : ishape) (ishape_2 : ishape) (v_vextbinop__ : vextbinop__) : instr + | VEXTTERNOP (ishape_1 : ishape) (ishape_2 : ishape) (v_vextternop__ : vextternop__) : instr + | VNARROW (ishape_1 : ishape) (ishape_2 : ishape) (v_sx : sx) : instr + | VCVTOP (shape_1 : shape) (shape_2 : shape) (v_vcvtop__ : vcvtop__) : instr + | VSPLAT (v_shape : shape) : instr + | VEXTRACT_LANE (v_shape : shape) (sx_opt : (Option sx)) (v_laneidx : laneidx) : instr + | VREPLACE_LANE (v_shape : shape) (v_laneidx : laneidx) : instr + | REF_I31_NUM (v_u31 : u31) : instr + | REF_STRUCT_ADDR (v_structaddr : structaddr) : instr + | REF_ARRAY_ADDR (v_arrayaddr : arrayaddr) : instr + | REF_FUNC_ADDR (v_funcaddr : funcaddr) : instr + | REF_EXN_ADDR (v_exnaddr : exnaddr) : instr + | REF_HOST_ADDR (v_hostaddr : hostaddr) : instr + | REF_EXTERN (v_addrref : addrref) : instr + | LABEL_ (v_n : n) (instr_lst : (List instr)) (_ : (List instr)) : instr + | FRAME_ (v_n : n) (v_frame : frame) (instr_lst : (List instr)) : instr + | HANDLER_ (v_n : n) (catch_lst : (List «catch»)) (instr_lst : (List instr)) : instr + | TRAP : instr +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def instr_addrref : ∀ (var_0 : addrref) , instr + | (.REF_I31_NUM x0) => + (.REF_I31_NUM x0) + | (.REF_STRUCT_ADDR x0) => + (.REF_STRUCT_ADDR x0) + | (.REF_ARRAY_ADDR x0) => + (.REF_ARRAY_ADDR x0) + | (.REF_FUNC_ADDR x0) => + (.REF_FUNC_ADDR x0) + | (.REF_EXN_ADDR x0) => + (.REF_EXN_ADDR x0) + | (.REF_HOST_ADDR x0) => + (.REF_HOST_ADDR x0) + | (.REF_EXTERN x0) => + (.REF_EXTERN x0) + + +/- Auxiliary Definition at: -/ +def instr_val : ∀ (var_0 : val) , instr + | (.CONST x0 x1) => + (.CONST x0 x1) + | (.VCONST x0 x1) => + (.VCONST x0 x1) + | (.REF_NULL x0) => + (.REF_NULL x0) + | (.REF_I31_NUM x0) => + (.REF_I31_NUM x0) + | (.REF_STRUCT_ADDR x0) => + (.REF_STRUCT_ADDR x0) + | (.REF_ARRAY_ADDR x0) => + (.REF_ARRAY_ADDR x0) + | (.REF_FUNC_ADDR x0) => + (.REF_FUNC_ADDR x0) + | (.REF_EXN_ADDR x0) => + (.REF_EXN_ADDR x0) + | (.REF_HOST_ADDR x0) => + (.REF_HOST_ADDR x0) + | (.REF_EXTERN x0) => + (.REF_EXTERN x0) + + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:392.1-393.9 -/ +abbrev expr : Type := (List instr) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:404.1-404.35 -/ +def memarg0 : memarg := { ALIGN := (.mk_uN 0), OFFSET := (.mk_uN 0) } + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:407.1-407.69 -/ +def const : ∀ (v_consttype : consttype) (v_lit_ : lit_) , instr + | .I32, (.mk_lit__0 .I32 c) => + (.CONST .I32 c) + | .I64, (.mk_lit__0 .I64 c) => + (.CONST .I64 c) + | .F32, (.mk_lit__0 .F32 c) => + (.CONST .F32 c) + | .F64, (.mk_lit__0 .F64 c) => + (.CONST .F64 c) + | .V128, (.mk_lit__1 .V128 c) => + (.VCONST .V128 c) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:414.1-414.30 -/ +def free_shape : ∀ (v_shape : shape) , free + | (.X v_lanetype v_dim) => + (free_lanetype v_lanetype) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:415.6-415.21 -/ +inductive fun_free_blocktype : blocktype -> free -> Prop where + | fun_free_blocktype_case_0 : forall (valtype_opt : (Option valtype)) (var_0_opt : (Option free)), + ((var_0_opt == none) <-> (valtype_opt == none)) -> + Forall₂ (fun (var_0 : free) (v_valtype : valtype) => (fun_free_valtype v_valtype var_0)) (Option.toList var_0_opt) (Option.toList valtype_opt) -> + fun_free_blocktype (._RESULT valtype_opt) (free_opt var_0_opt) + | fun_free_blocktype_case_1 : forall (v_typeidx : uN), fun_free_blocktype (._IDX v_typeidx) (free_typeidx v_typeidx) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 -/ +inductive fun_shift_labelidxs : (List labelidx) -> (List labelidx) -> Prop where + | fun_shift_labelidxs_case_0 : fun_shift_labelidxs [] [] + | fun_shift_labelidxs_case_1 : forall (labelidx'_lst : (List labelidx)) (var_0 : (List labelidx)), + (fun_shift_labelidxs labelidx'_lst var_0) -> + fun_shift_labelidxs ([(.mk_uN 0)] ++ labelidx'_lst) var_0 + | fun_shift_labelidxs_case_2 : forall (v_labelidx : uN) (labelidx'_lst : (List labelidx)) (var_0 : (List labelidx)), + (fun_shift_labelidxs labelidx'_lst var_0) -> + fun_shift_labelidxs ([v_labelidx] ++ labelidx'_lst) ([(.mk_uN ((((proj_uN_0 v_labelidx) : Nat) - (1 : Nat)) : Nat))] ++ var_0) + +/- Recursive Definitions at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-418.31 -/ +mutual +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 -/ +inductive fun_free_instr : instr -> free -> Prop where + | fun_free_instr_case_0 : fun_free_instr .NOP { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_1 : fun_free_instr .UNREACHABLE { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_2 : fun_free_instr .DROP { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_3 : forall (valtype_lst_opt : (Option (List valtype))) (var_1_lst_opt : (Option (List free))) (var_0_opt : (Option free)), + ((var_1_lst_opt == none) <-> (valtype_lst_opt == none)) -> + Forall₂ (fun (var_1_lst : (List free)) (valtype_lst : (List valtype)) => ((List.length var_1_lst) == (List.length valtype_lst))) (Option.toList var_1_lst_opt) (Option.toList valtype_lst_opt) -> + Forall₂ (fun (var_1_lst : (List free)) (valtype_lst : (List valtype)) => Forall₂ (fun (var_1 : free) (v_valtype : valtype) => (fun_free_valtype v_valtype var_1)) var_1_lst valtype_lst) (Option.toList var_1_lst_opt) (Option.toList valtype_lst_opt) -> + ((var_1_lst_opt == none) <-> (var_0_opt == none)) -> + Forall₂ (fun (var_1_lst : (List free)) (var_0 : free) => (fun_free_list var_1_lst var_0)) (Option.toList var_1_lst_opt) (Option.toList var_0_opt) -> + fun_free_instr (.SELECT valtype_lst_opt) (free_opt var_0_opt) + | fun_free_instr_case_4 : forall (v_blocktype : blocktype) (instr_lst : (List instr)) (var_1 : free) (var_0 : free), + (fun_free_block instr_lst var_1) -> + (fun_free_blocktype v_blocktype var_0) -> + fun_free_instr (.BLOCK v_blocktype instr_lst) (var_0 ++ var_1) + | fun_free_instr_case_5 : forall (v_blocktype : blocktype) (instr_lst : (List instr)) (var_1 : free) (var_0 : free), + (fun_free_block instr_lst var_1) -> + (fun_free_blocktype v_blocktype var_0) -> + fun_free_instr (.LOOP v_blocktype instr_lst) (var_0 ++ var_1) + | fun_free_instr_case_6 : forall (v_blocktype : blocktype) (instr_1_lst : (List instr)) (instr_2_lst : (List instr)) (var_2 : free) (var_1 : free) (var_0 : free), + (fun_free_block instr_2_lst var_2) -> + (fun_free_block instr_1_lst var_1) -> + (fun_free_blocktype v_blocktype var_0) -> + fun_free_instr (.IFELSE v_blocktype instr_1_lst instr_2_lst) ((var_0 ++ var_1) ++ var_2) + | fun_free_instr_case_7 : forall (v_labelidx : uN), fun_free_instr (.BR v_labelidx) (free_labelidx v_labelidx) + | fun_free_instr_case_8 : forall (v_labelidx : uN), fun_free_instr (.BR_IF v_labelidx) (free_labelidx v_labelidx) + | fun_free_instr_case_9 : forall (labelidx_lst : (List labelidx)) (labelidx' : uN) (var_0 : free), + (fun_free_list (List.map (fun (v_labelidx : labelidx) => (free_labelidx v_labelidx)) labelidx_lst) var_0) -> + fun_free_instr (.BR_TABLE labelidx_lst labelidx') (var_0 ++ (free_labelidx labelidx')) + | fun_free_instr_case_10 : forall (v_labelidx : uN), fun_free_instr (.BR_ON_NULL v_labelidx) (free_labelidx v_labelidx) + | fun_free_instr_case_11 : forall (v_labelidx : uN), fun_free_instr (.BR_ON_NON_NULL v_labelidx) (free_labelidx v_labelidx) + | fun_free_instr_case_12 : forall (v_labelidx : uN) (reftype_1 : reftype) (reftype_2 : reftype) (var_1 : free) (var_0 : free), + (fun_free_reftype reftype_2 var_1) -> + (fun_free_reftype reftype_1 var_0) -> + fun_free_instr (.BR_ON_CAST v_labelidx reftype_1 reftype_2) (((free_labelidx v_labelidx) ++ var_0) ++ var_1) + | fun_free_instr_case_13 : forall (v_labelidx : uN) (reftype_1 : reftype) (reftype_2 : reftype) (var_1 : free) (var_0 : free), + (fun_free_reftype reftype_2 var_1) -> + (fun_free_reftype reftype_1 var_0) -> + fun_free_instr (.BR_ON_CAST_FAIL v_labelidx reftype_1 reftype_2) (((free_labelidx v_labelidx) ++ var_0) ++ var_1) + | fun_free_instr_case_14 : forall (v_funcidx : uN), fun_free_instr (.CALL v_funcidx) (free_funcidx v_funcidx) + | fun_free_instr_case_15 : forall (v_typeuse : typeuse) (var_0 : free), + (fun_free_typeuse v_typeuse var_0) -> + fun_free_instr (.CALL_REF v_typeuse) var_0 + | fun_free_instr_case_16 : forall (v_tableidx : uN) (v_typeuse : typeuse) (var_0 : free), + (fun_free_typeuse v_typeuse var_0) -> + fun_free_instr (.CALL_INDIRECT v_tableidx v_typeuse) ((free_tableidx v_tableidx) ++ var_0) + | fun_free_instr_case_17 : fun_free_instr .RETURN { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_18 : forall (v_funcidx : uN), fun_free_instr (.RETURN_CALL v_funcidx) (free_funcidx v_funcidx) + | fun_free_instr_case_19 : forall (v_typeuse : typeuse) (var_0 : free), + (fun_free_typeuse v_typeuse var_0) -> + fun_free_instr (.RETURN_CALL_REF v_typeuse) var_0 + | fun_free_instr_case_20 : forall (v_tableidx : uN) (v_typeuse : typeuse) (var_0 : free), + (fun_free_typeuse v_typeuse var_0) -> + fun_free_instr (.RETURN_CALL_INDIRECT v_tableidx v_typeuse) ((free_tableidx v_tableidx) ++ var_0) + | fun_free_instr_case_21 : forall (v_numtype : numtype) (numlit : num_), fun_free_instr (.CONST v_numtype numlit) (free_numtype v_numtype) + | fun_free_instr_case_22 : forall (v_numtype : numtype) (unop : unop_), fun_free_instr (.UNOP v_numtype unop) (free_numtype v_numtype) + | fun_free_instr_case_23 : forall (v_numtype : numtype) (binop : binop_), fun_free_instr (.BINOP v_numtype binop) (free_numtype v_numtype) + | fun_free_instr_case_24 : forall (v_numtype : numtype) (testop : testop_), fun_free_instr (.TESTOP v_numtype testop) (free_numtype v_numtype) + | fun_free_instr_case_25 : forall (v_numtype : numtype) (relop : relop_), fun_free_instr (.RELOP v_numtype relop) (free_numtype v_numtype) + | fun_free_instr_case_26 : forall (numtype_1 : numtype) (numtype_2 : numtype) (cvtop : cvtop__), fun_free_instr (.CVTOP numtype_1 numtype_2 cvtop) ((free_numtype numtype_1) ++ (free_numtype numtype_2)) + | fun_free_instr_case_27 : forall (v_vectype : vectype) (veclit : uN), fun_free_instr (.VCONST v_vectype veclit) (free_vectype v_vectype) + | fun_free_instr_case_28 : forall (v_vectype : vectype) (v_vvunop : vvunop), fun_free_instr (.VVUNOP v_vectype v_vvunop) (free_vectype v_vectype) + | fun_free_instr_case_29 : forall (v_vectype : vectype) (v_vvbinop : vvbinop), fun_free_instr (.VVBINOP v_vectype v_vvbinop) (free_vectype v_vectype) + | fun_free_instr_case_30 : forall (v_vectype : vectype) (v_vvternop : vvternop), fun_free_instr (.VVTERNOP v_vectype v_vvternop) (free_vectype v_vectype) + | fun_free_instr_case_31 : forall (v_vectype : vectype) (v_vvtestop : vvtestop), fun_free_instr (.VVTESTOP v_vectype v_vvtestop) (free_vectype v_vectype) + | fun_free_instr_case_32 : forall (v_shape : shape) (vunop : vunop_), fun_free_instr (.VUNOP v_shape vunop) (free_shape v_shape) + | fun_free_instr_case_33 : forall (v_shape : shape) (vbinop : vbinop_), fun_free_instr (.VBINOP v_shape vbinop) (free_shape v_shape) + | fun_free_instr_case_34 : forall (v_shape : shape) (vternop : vternop_), fun_free_instr (.VTERNOP v_shape vternop) (free_shape v_shape) + | fun_free_instr_case_35 : forall (v_shape : shape) (vtestop : vtestop_), fun_free_instr (.VTESTOP v_shape vtestop) (free_shape v_shape) + | fun_free_instr_case_36 : forall (v_shape : shape) (vrelop : vrelop_), fun_free_instr (.VRELOP v_shape vrelop) (free_shape v_shape) + | fun_free_instr_case_37 : forall (v_ishape : ishape) (vshiftop : vshiftop_), fun_free_instr (.VSHIFTOP v_ishape vshiftop) (free_shape (proj_ishape_0 v_ishape)) + | fun_free_instr_case_38 : forall (v_ishape : ishape), fun_free_instr (.VBITMASK v_ishape) (free_shape (proj_ishape_0 v_ishape)) + | fun_free_instr_case_39 : forall (v_bshape : bshape) (vswizzlop : vswizzlop_), fun_free_instr (.VSWIZZLOP v_bshape vswizzlop) (free_shape (proj_bshape_0 v_bshape)) + | fun_free_instr_case_40 : forall (v_bshape : bshape) (laneidx_lst : (List laneidx)), fun_free_instr (.VSHUFFLE v_bshape laneidx_lst) (free_shape (proj_bshape_0 v_bshape)) + | fun_free_instr_case_41 : forall (ishape_1 : ishape) (ishape_2 : ishape) (vextunop : vextunop__), fun_free_instr (.VEXTUNOP ishape_1 ishape_2 vextunop) ((free_shape (proj_ishape_0 ishape_1)) ++ (free_shape (proj_ishape_0 ishape_2))) + | fun_free_instr_case_42 : forall (ishape_1 : ishape) (ishape_2 : ishape) (vextbinop : vextbinop__), fun_free_instr (.VEXTBINOP ishape_1 ishape_2 vextbinop) ((free_shape (proj_ishape_0 ishape_1)) ++ (free_shape (proj_ishape_0 ishape_2))) + | fun_free_instr_case_43 : forall (ishape_1 : ishape) (ishape_2 : ishape) (vextternop : vextternop__), fun_free_instr (.VEXTTERNOP ishape_1 ishape_2 vextternop) ((free_shape (proj_ishape_0 ishape_1)) ++ (free_shape (proj_ishape_0 ishape_2))) + | fun_free_instr_case_44 : forall (ishape_1 : ishape) (ishape_2 : ishape) (v_sx : sx), fun_free_instr (.VNARROW ishape_1 ishape_2 v_sx) ((free_shape (proj_ishape_0 ishape_1)) ++ (free_shape (proj_ishape_0 ishape_2))) + | fun_free_instr_case_45 : forall (shape_1 : shape) (shape_2 : shape) (vcvtop : vcvtop__), fun_free_instr (.VCVTOP shape_1 shape_2 vcvtop) ((free_shape shape_1) ++ (free_shape shape_2)) + | fun_free_instr_case_46 : forall (v_shape : shape), fun_free_instr (.VSPLAT v_shape) (free_shape v_shape) + | fun_free_instr_case_47 : forall (v_shape : shape) (sx_opt : (Option sx)) (v_laneidx : uN), fun_free_instr (.VEXTRACT_LANE v_shape sx_opt v_laneidx) (free_shape v_shape) + | fun_free_instr_case_48 : forall (v_shape : shape) (v_laneidx : uN), fun_free_instr (.VREPLACE_LANE v_shape v_laneidx) (free_shape v_shape) + | fun_free_instr_case_49 : forall (v_heaptype : heaptype) (var_0 : free), + (fun_free_heaptype v_heaptype var_0) -> + fun_free_instr (.REF_NULL v_heaptype) var_0 + | fun_free_instr_case_50 : fun_free_instr .REF_IS_NULL { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_51 : fun_free_instr .REF_AS_NON_NULL { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_52 : fun_free_instr .REF_EQ { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_53 : forall (v_reftype : reftype) (var_0 : free), + (fun_free_reftype v_reftype var_0) -> + fun_free_instr (.REF_TEST v_reftype) var_0 + | fun_free_instr_case_54 : forall (v_reftype : reftype) (var_0 : free), + (fun_free_reftype v_reftype var_0) -> + fun_free_instr (.REF_CAST v_reftype) var_0 + | fun_free_instr_case_55 : forall (v_funcidx : uN), fun_free_instr (.REF_FUNC v_funcidx) (free_funcidx v_funcidx) + | fun_free_instr_case_56 : fun_free_instr .REF_I31 { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_57 : forall (v_sx : sx), fun_free_instr (.I31_GET v_sx) { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_58 : forall (v_typeidx : uN), fun_free_instr (.STRUCT_NEW v_typeidx) { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_59 : forall (v_typeidx : uN), fun_free_instr (.STRUCT_NEW_DEFAULT v_typeidx) (free_typeidx v_typeidx) + | fun_free_instr_case_60 : forall (sx_opt : (Option sx)) (v_typeidx : uN) (v_u32 : uN), fun_free_instr (.STRUCT_GET sx_opt v_typeidx v_u32) (free_typeidx v_typeidx) + | fun_free_instr_case_61 : forall (v_typeidx : uN) (v_u32 : uN), fun_free_instr (.STRUCT_SET v_typeidx v_u32) (free_typeidx v_typeidx) + | fun_free_instr_case_62 : forall (v_typeidx : uN), fun_free_instr (.ARRAY_NEW v_typeidx) (free_typeidx v_typeidx) + | fun_free_instr_case_63 : forall (v_typeidx : uN), fun_free_instr (.ARRAY_NEW_DEFAULT v_typeidx) (free_typeidx v_typeidx) + | fun_free_instr_case_64 : forall (v_typeidx : uN) (v_u32 : uN), fun_free_instr (.ARRAY_NEW_FIXED v_typeidx v_u32) (free_typeidx v_typeidx) + | fun_free_instr_case_65 : forall (v_typeidx : uN) (v_dataidx : uN), fun_free_instr (.ARRAY_NEW_DATA v_typeidx v_dataidx) ((free_typeidx v_typeidx) ++ (free_dataidx v_dataidx)) + | fun_free_instr_case_66 : forall (v_typeidx : uN) (v_elemidx : uN), fun_free_instr (.ARRAY_NEW_ELEM v_typeidx v_elemidx) ((free_typeidx v_typeidx) ++ (free_elemidx v_elemidx)) + | fun_free_instr_case_67 : forall (sx_opt : (Option sx)) (v_typeidx : uN), fun_free_instr (.ARRAY_GET sx_opt v_typeidx) (free_typeidx v_typeidx) + | fun_free_instr_case_68 : forall (v_typeidx : uN), fun_free_instr (.ARRAY_SET v_typeidx) (free_typeidx v_typeidx) + | fun_free_instr_case_69 : fun_free_instr .ARRAY_LEN { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_70 : forall (v_typeidx : uN), fun_free_instr (.ARRAY_FILL v_typeidx) (free_typeidx v_typeidx) + | fun_free_instr_case_71 : forall (typeidx_1 : uN) (typeidx_2 : uN), fun_free_instr (.ARRAY_COPY typeidx_1 typeidx_2) ((free_typeidx typeidx_1) ++ (free_typeidx typeidx_2)) + | fun_free_instr_case_72 : forall (v_typeidx : uN) (v_dataidx : uN), fun_free_instr (.ARRAY_INIT_DATA v_typeidx v_dataidx) ((free_typeidx v_typeidx) ++ (free_dataidx v_dataidx)) + | fun_free_instr_case_73 : forall (v_typeidx : uN) (v_elemidx : uN), fun_free_instr (.ARRAY_INIT_ELEM v_typeidx v_elemidx) ((free_typeidx v_typeidx) ++ (free_elemidx v_elemidx)) + | fun_free_instr_case_74 : fun_free_instr .EXTERN_CONVERT_ANY { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_75 : fun_free_instr .ANY_CONVERT_EXTERN { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_instr_case_76 : forall (v_localidx : uN), fun_free_instr (.LOCAL_GET v_localidx) (free_localidx v_localidx) + | fun_free_instr_case_77 : forall (v_localidx : uN), fun_free_instr (.LOCAL_SET v_localidx) (free_localidx v_localidx) + | fun_free_instr_case_78 : forall (v_localidx : uN), fun_free_instr (.LOCAL_TEE v_localidx) (free_localidx v_localidx) + | fun_free_instr_case_79 : forall (v_globalidx : uN), fun_free_instr (.GLOBAL_GET v_globalidx) (free_globalidx v_globalidx) + | fun_free_instr_case_80 : forall (v_globalidx : uN), fun_free_instr (.GLOBAL_SET v_globalidx) (free_globalidx v_globalidx) + | fun_free_instr_case_81 : forall (v_tableidx : uN), fun_free_instr (.TABLE_GET v_tableidx) (free_tableidx v_tableidx) + | fun_free_instr_case_82 : forall (v_tableidx : uN), fun_free_instr (.TABLE_SET v_tableidx) (free_tableidx v_tableidx) + | fun_free_instr_case_83 : forall (v_tableidx : uN), fun_free_instr (.TABLE_SIZE v_tableidx) (free_tableidx v_tableidx) + | fun_free_instr_case_84 : forall (v_tableidx : uN), fun_free_instr (.TABLE_GROW v_tableidx) (free_tableidx v_tableidx) + | fun_free_instr_case_85 : forall (v_tableidx : uN), fun_free_instr (.TABLE_FILL v_tableidx) (free_tableidx v_tableidx) + | fun_free_instr_case_86 : forall (tableidx_1 : uN) (tableidx_2 : uN), fun_free_instr (.TABLE_COPY tableidx_1 tableidx_2) ((free_tableidx tableidx_1) ++ (free_tableidx tableidx_2)) + | fun_free_instr_case_87 : forall (v_tableidx : uN) (v_elemidx : uN), fun_free_instr (.TABLE_INIT v_tableidx v_elemidx) ((free_tableidx v_tableidx) ++ (free_elemidx v_elemidx)) + | fun_free_instr_case_88 : forall (v_elemidx : uN), fun_free_instr (.ELEM_DROP v_elemidx) (free_elemidx v_elemidx) + | fun_free_instr_case_89 : forall (v_numtype : numtype) (loadop_opt : (Option loadop_)) (v_memidx : uN) (v_memarg : memarg), fun_free_instr (.LOAD v_numtype loadop_opt v_memidx v_memarg) ((free_numtype v_numtype) ++ (free_memidx v_memidx)) + | fun_free_instr_case_90 : forall (v_numtype : numtype) (storeop_opt : (Option storeop_)) (v_memidx : uN) (v_memarg : memarg), fun_free_instr (.STORE v_numtype storeop_opt v_memidx v_memarg) ((free_numtype v_numtype) ++ (free_memidx v_memidx)) + | fun_free_instr_case_91 : forall (v_vectype : vectype) (vloadop_opt : (Option vloadop_)) (v_memidx : uN) (v_memarg : memarg), fun_free_instr (.VLOAD v_vectype vloadop_opt v_memidx v_memarg) ((free_vectype v_vectype) ++ (free_memidx v_memidx)) + | fun_free_instr_case_92 : forall (v_vectype : vectype) (v_sz : sz) (v_memidx : uN) (v_memarg : memarg) (v_laneidx : uN), fun_free_instr (.VLOAD_LANE v_vectype v_sz v_memidx v_memarg v_laneidx) ((free_vectype v_vectype) ++ (free_memidx v_memidx)) + | fun_free_instr_case_93 : forall (v_vectype : vectype) (v_memidx : uN) (v_memarg : memarg), fun_free_instr (.VSTORE v_vectype v_memidx v_memarg) ((free_vectype v_vectype) ++ (free_memidx v_memidx)) + | fun_free_instr_case_94 : forall (v_vectype : vectype) (v_sz : sz) (v_memidx : uN) (v_memarg : memarg) (v_laneidx : uN), fun_free_instr (.VSTORE_LANE v_vectype v_sz v_memidx v_memarg v_laneidx) ((free_vectype v_vectype) ++ (free_memidx v_memidx)) + | fun_free_instr_case_95 : forall (v_memidx : uN), fun_free_instr (.MEMORY_SIZE v_memidx) (free_memidx v_memidx) + | fun_free_instr_case_96 : forall (v_memidx : uN), fun_free_instr (.MEMORY_GROW v_memidx) (free_memidx v_memidx) + | fun_free_instr_case_97 : forall (v_memidx : uN), fun_free_instr (.MEMORY_FILL v_memidx) (free_memidx v_memidx) + | fun_free_instr_case_98 : forall (memidx_1 : uN) (memidx_2 : uN), fun_free_instr (.MEMORY_COPY memidx_1 memidx_2) ((free_memidx memidx_1) ++ (free_memidx memidx_2)) + | fun_free_instr_case_99 : forall (v_memidx : uN) (v_dataidx : uN), fun_free_instr (.MEMORY_INIT v_memidx v_dataidx) ((free_memidx v_memidx) ++ (free_dataidx v_dataidx)) + | fun_free_instr_case_100 : forall (v_dataidx : uN), fun_free_instr (.DATA_DROP v_dataidx) (free_dataidx v_dataidx) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 -/ +inductive fun_free_block : (List instr) -> free -> Prop where + | fun_free_block_case_0 : forall (instr_lst : (List instr)) (v_free : free) (var_2_lst : (List free)) (var_1 : free) (var_0 : (List labelidx)), + ((List.length var_2_lst) == (List.length instr_lst)) -> + Forall₂ (fun (var_2 : free) (v_instr : instr) => (fun_free_instr v_instr var_2)) var_2_lst instr_lst -> + (fun_free_list var_2_lst var_1) -> + (fun_shift_labelidxs (v_free.LABELS) var_0) -> + (v_free == var_1) -> + fun_free_block instr_lst (v_free <| LABELS := var_0 |>) + +end + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:419.6-419.16 -/ +inductive fun_free_expr : expr -> free -> Prop where + | fun_free_expr_case_0 : forall (instr_lst : (List instr)) (var_1_lst : (List free)) (var_0 : free), + ((List.length var_1_lst) == (List.length instr_lst)) -> + Forall₂ (fun (var_1 : free) (v_instr : instr) => (fun_free_instr v_instr var_1)) var_1_lst instr_lst -> + (fun_free_list var_1_lst var_0) -> + fun_free_expr instr_lst var_0 + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:5.1-6.43 -/ +inductive elemmode : Type where + | ACTIVE (v_tableidx : tableidx) (v_expr : expr) : elemmode + | PASSIVE : elemmode + | DECLARE : elemmode +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:5.8-5.16 -/ +inductive wf_elemmode : elemmode -> Prop where + | elemmode_case_0 : forall (v_tableidx : tableidx) (v_expr : expr), + (wf_uN 32 v_tableidx) -> + Forall (fun (v_expr : instr) => (wf_instr v_expr)) v_expr -> + wf_elemmode (.ACTIVE v_tableidx v_expr) + | elemmode_case_1 : wf_elemmode .PASSIVE + | elemmode_case_2 : wf_elemmode .DECLARE + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:7.1-8.31 -/ +inductive datamode : Type where + | ACTIVE (v_memidx : memidx) (v_expr : expr) : datamode + | PASSIVE : datamode +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:7.8-7.16 -/ +inductive wf_datamode : datamode -> Prop where + | datamode_case_0 : forall (v_memidx : memidx) (v_expr : expr), + (wf_uN 32 v_memidx) -> + Forall (fun (v_expr : instr) => (wf_instr v_expr)) v_expr -> + wf_datamode (.ACTIVE v_memidx v_expr) + | datamode_case_1 : wf_datamode .PASSIVE + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:10.1-11.15 -/ +inductive type : Type where + | TYPE (v_rectype : rectype) : type +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:13.1-14.14 -/ +inductive tag : Type where + | TAG (v_tagtype : tagtype) : tag +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:13.8-13.11 -/ +inductive wf_tag : tag -> Prop where + | tag_case_0 : forall (v_tagtype : tagtype), + (wf_typeuse v_tagtype) -> + wf_tag (.TAG v_tagtype) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:16.1-17.25 -/ +inductive global : Type where + | GLOBAL (v_globaltype : globaltype) (v_expr : expr) : global +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:16.8-16.14 -/ +inductive wf_global : global -> Prop where + | global_case_0 : forall (v_globaltype : globaltype) (v_expr : expr), + (wf_globaltype v_globaltype) -> + Forall (fun (v_expr : instr) => (wf_instr v_expr)) v_expr -> + wf_global (.GLOBAL v_globaltype v_expr) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:19.1-20.17 -/ +inductive mem : Type where + | MEMORY (v_memtype : memtype) : mem +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:19.8-19.11 -/ +inductive wf_mem : mem -> Prop where + | mem_case_0 : forall (v_memtype : memtype), + (wf_memtype v_memtype) -> + wf_mem (.MEMORY v_memtype) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:22.1-23.23 -/ +inductive table : Type where + | TABLE (v_tabletype : tabletype) (v_expr : expr) : table +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:22.8-22.13 -/ +inductive wf_table : table -> Prop where + | table_case_0 : forall (v_tabletype : tabletype) (v_expr : expr), + (wf_tabletype v_tabletype) -> + Forall (fun (v_expr : instr) => (wf_instr v_expr)) v_expr -> + wf_table (.TABLE v_tabletype v_expr) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:25.1-26.22 -/ +inductive data : Type where + | DATA (byte_lst : (List byte)) (v_datamode : datamode) : data +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:25.8-25.12 -/ +inductive wf_data : data -> Prop where + | data_case_0 : forall (byte_lst : (List byte)) (v_datamode : datamode), + Forall (fun (v_byte : byte) => (wf_byte v_byte)) byte_lst -> + (wf_datamode v_datamode) -> + wf_data (.DATA byte_lst v_datamode) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:28.1-29.16 -/ +inductive «local» : Type where + | LOCAL (v_valtype : valtype) : «local» +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:28.8-28.13 -/ +inductive wf_local : «local» -> Prop where + | local_case_0 : forall (v_valtype : valtype), + (wf_valtype v_valtype) -> + wf_local (.LOCAL v_valtype) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:31.1-32.27 -/ +inductive func : Type where + | FUNC (v_typeidx : typeidx) (local_lst : (List «local»)) (v_expr : expr) : func +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:31.8-31.12 -/ +inductive wf_func : func -> Prop where + | func_case_0 : forall (v_typeidx : typeidx) (local_lst : (List «local»)) (v_expr : expr), + (wf_uN 32 v_typeidx) -> + Forall (fun (v_local : «local») => (wf_local v_local)) local_lst -> + Forall (fun (v_expr : instr) => (wf_instr v_expr)) v_expr -> + wf_func (.FUNC v_typeidx local_lst v_expr) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:34.1-35.30 -/ +inductive elem : Type where + | ELEM (v_reftype : reftype) (expr_lst : (List expr)) (v_elemmode : elemmode) : elem +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:34.8-34.12 -/ +inductive wf_elem : elem -> Prop where + | elem_case_0 : forall (v_reftype : reftype) (expr_lst : (List expr)) (v_elemmode : elemmode), + (wf_reftype v_reftype) -> + Forall (fun (v_expr : expr) => Forall (fun (v_expr : instr) => (wf_instr v_expr)) v_expr) expr_lst -> + (wf_elemmode v_elemmode) -> + wf_elem (.ELEM v_reftype expr_lst v_elemmode) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:37.1-38.16 -/ +inductive start : Type where + | START (v_funcidx : funcidx) : start +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:37.8-37.13 -/ +inductive wf_start : start -> Prop where + | start_case_0 : forall (v_funcidx : funcidx), + (wf_uN 32 v_funcidx) -> + wf_start (.START v_funcidx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:40.1-41.30 -/ +inductive «import» : Type where + | IMPORT (v_name : name) (_ : name) (v_externtype : externtype) : «import» +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:40.8-40.14 -/ +inductive wf_import : «import» -> Prop where + | import_case_0 : forall (v_name : name) (v_externtype : externtype) (var_0 : name), + (wf_name v_name) -> + (wf_externtype v_externtype) -> + (wf_name var_0) -> + wf_import (.IMPORT v_name var_0 v_externtype) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:43.1-44.24 -/ +inductive «export» : Type where + | EXPORT (v_name : name) (v_externidx : externidx) : «export» +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:43.8-43.14 -/ +inductive wf_export : «export» -> Prop where + | export_case_0 : forall (v_name : name) (v_externidx : externidx), + (wf_name v_name) -> + (wf_externidx v_externidx) -> + wf_export (.EXPORT v_name v_externidx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:46.1-47.81 -/ +inductive module : Type where + | MODULE (type_lst : (List type)) (import_lst : (List «import»)) (tag_lst : (List tag)) (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (func_lst : (List func)) (data_lst : (List data)) (elem_lst : (List elem)) (start_opt : (Option start)) (export_lst : (List «export»)) : module +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:46.8-46.14 -/ +inductive wf_module : module -> Prop where + | module_case_0 : forall (type_lst : (List type)) (import_lst : (List «import»)) (tag_lst : (List tag)) (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (func_lst : (List func)) (data_lst : (List data)) (elem_lst : (List elem)) (start_opt : (Option start)) (export_lst : (List «export»)), + Forall (fun (v_import : «import») => (wf_import v_import)) import_lst -> + Forall (fun (v_tag : tag) => (wf_tag v_tag)) tag_lst -> + Forall (fun (v_global : global) => (wf_global v_global)) global_lst -> + Forall (fun (v_mem : mem) => (wf_mem v_mem)) mem_lst -> + Forall (fun (v_table : table) => (wf_table v_table)) table_lst -> + Forall (fun (v_func : func) => (wf_func v_func)) func_lst -> + Forall (fun (v_data : data) => (wf_data v_data)) data_lst -> + Forall (fun (v_elem : elem) => (wf_elem v_elem)) elem_lst -> + Forall (fun (v_start : start) => (wf_start v_start)) (Option.toList start_opt) -> + Forall (fun (v_export : «export») => (wf_export v_export)) export_lst -> + wf_module (.MODULE type_lst import_lst tag_lst global_lst mem_lst table_lst func_lst data_lst elem_lst start_opt export_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:62.6-62.16 -/ +inductive fun_free_type : type -> free -> Prop where + | fun_free_type_case_0 : forall (v_rectype : rectype) (var_0 : free), + (fun_free_rectype v_rectype var_0) -> + fun_free_type (.TYPE v_rectype) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:63.6-63.15 -/ +inductive fun_free_tag : tag -> free -> Prop where + | fun_free_tag_case_0 : forall (v_tagtype : typeuse) (var_0 : free), + (fun_free_tagtype v_tagtype var_0) -> + fun_free_tag (.TAG v_tagtype) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:64.6-64.18 -/ +inductive fun_free_global : global -> free -> Prop where + | fun_free_global_case_0 : forall (v_globaltype : globaltype) (v_expr : (List instr)) (var_1 : free) (var_0 : free), + (fun_free_expr v_expr var_1) -> + (fun_free_globaltype v_globaltype var_0) -> + fun_free_global (.GLOBAL v_globaltype v_expr) (var_0 ++ var_1) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:65.1-65.26 -/ +def free_mem : ∀ (v_mem : mem) , free + | (.MEMORY v_memtype) => + (free_memtype v_memtype) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:66.6-66.17 -/ +inductive fun_free_table : table -> free -> Prop where + | fun_free_table_case_0 : forall (v_tabletype : tabletype) (v_expr : (List instr)) (var_1 : free) (var_0 : free), + (fun_free_expr v_expr var_1) -> + (fun_free_tabletype v_tabletype var_0) -> + fun_free_table (.TABLE v_tabletype v_expr) (var_0 ++ var_1) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:67.6-67.17 -/ +inductive fun_free_local : «local» -> free -> Prop where + | fun_free_local_case_0 : forall (t : valtype) (var_0 : free), + (fun_free_valtype t var_0) -> + fun_free_local (.LOCAL t) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:68.6-68.16 -/ +inductive fun_free_func : func -> free -> Prop where + | fun_free_func_case_0 : forall (v_typeidx : uN) (local_lst : (List «local»)) (v_expr : (List instr)) (var_2 : free) (var_1_lst : (List free)) (var_0 : free), + (fun_free_block v_expr var_2) -> + ((List.length var_1_lst) == (List.length local_lst)) -> + Forall₂ (fun (var_1 : free) (v_local : «local») => (fun_free_local v_local var_1)) var_1_lst local_lst -> + (fun_free_list var_1_lst var_0) -> + fun_free_func (.FUNC v_typeidx local_lst v_expr) (((free_typeidx v_typeidx) ++ var_0) ++ (var_2 <| LOCALS := [] |>)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:71.6-71.20 -/ +inductive fun_free_datamode : datamode -> free -> Prop where + | fun_free_datamode_case_0 : forall (v_memidx : uN) (v_expr : (List instr)) (var_0 : free), + (fun_free_expr v_expr var_0) -> + fun_free_datamode (.ACTIVE v_memidx v_expr) ((free_memidx v_memidx) ++ var_0) + | fun_free_datamode_case_1 : fun_free_datamode .PASSIVE { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:69.6-69.16 -/ +inductive fun_free_data : data -> free -> Prop where + | fun_free_data_case_0 : forall (byte_lst : (List byte)) (v_datamode : datamode) (var_0 : free), + (fun_free_datamode v_datamode var_0) -> + fun_free_data (.DATA byte_lst v_datamode) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:72.6-72.20 -/ +inductive fun_free_elemmode : elemmode -> free -> Prop where + | fun_free_elemmode_case_0 : forall (v_tableidx : uN) (v_expr : (List instr)) (var_0 : free), + (fun_free_expr v_expr var_0) -> + fun_free_elemmode (.ACTIVE v_tableidx v_expr) ((free_tableidx v_tableidx) ++ var_0) + | fun_free_elemmode_case_1 : fun_free_elemmode .PASSIVE { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + | fun_free_elemmode_case_2 : fun_free_elemmode .DECLARE { TYPES := [], FUNCS := [], GLOBALS := [], TABLES := [], MEMS := [], ELEMS := [], DATAS := [], LOCALS := [], LABELS := [] } + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:70.6-70.16 -/ +inductive fun_free_elem : elem -> free -> Prop where + | fun_free_elem_case_0 : forall (v_reftype : reftype) (expr_lst : (List expr)) (v_elemmode : elemmode) (var_3 : free) (var_2_lst : (List free)) (var_1 : free) (var_0 : free), + (fun_free_elemmode v_elemmode var_3) -> + ((List.length var_2_lst) == (List.length expr_lst)) -> + Forall₂ (fun (var_2 : free) (v_expr : expr) => (fun_free_expr v_expr var_2)) var_2_lst expr_lst -> + (fun_free_list var_2_lst var_1) -> + (fun_free_reftype v_reftype var_0) -> + fun_free_elem (.ELEM v_reftype expr_lst v_elemmode) ((var_0 ++ var_1) ++ var_3) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:73.1-73.30 -/ +def free_start : ∀ (v_start : start) , free + | (.START v_funcidx) => + (free_funcidx v_funcidx) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:74.6-74.18 -/ +inductive fun_free_import : «import» -> free -> Prop where + | fun_free_import_case_0 : forall (name_1 : name) (name_2 : name) (v_externtype : externtype) (var_0 : free), + (fun_free_externtype v_externtype var_0) -> + fun_free_import (.IMPORT name_1 name_2 v_externtype) var_0 + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:75.1-75.32 -/ +def free_export : ∀ (v_export : «export») , free + | (.EXPORT v_name v_externidx) => + (free_externidx v_externidx) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:76.6-76.18 -/ +inductive fun_free_module : module -> free -> Prop where + | fun_free_module_case_0 : forall (type_lst : (List type)) (import_lst : (List «import»)) (tag_lst : (List tag)) (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (func_lst : (List func)) (data_lst : (List data)) (elem_lst : (List elem)) (start_opt : (Option start)) (export_lst : (List «export»)) (var_17 : free) (var_16_lst : (List free)) (var_15 : free) (var_14_lst : (List free)) (var_13 : free) (var_12_lst : (List free)) (var_11 : free) (var_10_lst : (List free)) (var_9 : free) (var_8_lst : (List free)) (var_7 : free) (var_6 : free) (var_5_lst : (List free)) (var_4 : free) (var_3_lst : (List free)) (var_2 : free) (var_1_lst : (List free)) (var_0 : free), + (fun_free_list (List.map (fun (v_export : «export») => (free_export v_export)) export_lst) var_17) -> + ((List.length var_16_lst) == (List.length import_lst)) -> + Forall₂ (fun (var_16 : free) (v_import : «import») => (fun_free_import v_import var_16)) var_16_lst import_lst -> + (fun_free_list var_16_lst var_15) -> + ((List.length var_14_lst) == (List.length elem_lst)) -> + Forall₂ (fun (var_14 : free) (v_elem : elem) => (fun_free_elem v_elem var_14)) var_14_lst elem_lst -> + (fun_free_list var_14_lst var_13) -> + ((List.length var_12_lst) == (List.length data_lst)) -> + Forall₂ (fun (var_12 : free) (v_data : data) => (fun_free_data v_data var_12)) var_12_lst data_lst -> + (fun_free_list var_12_lst var_11) -> + ((List.length var_10_lst) == (List.length func_lst)) -> + Forall₂ (fun (var_10 : free) (v_func : func) => (fun_free_func v_func var_10)) var_10_lst func_lst -> + (fun_free_list var_10_lst var_9) -> + ((List.length var_8_lst) == (List.length table_lst)) -> + Forall₂ (fun (var_8 : free) (v_table : table) => (fun_free_table v_table var_8)) var_8_lst table_lst -> + (fun_free_list var_8_lst var_7) -> + (fun_free_list (List.map (fun (v_mem : mem) => (free_mem v_mem)) mem_lst) var_6) -> + ((List.length var_5_lst) == (List.length global_lst)) -> + Forall₂ (fun (var_5 : free) (v_global : global) => (fun_free_global v_global var_5)) var_5_lst global_lst -> + (fun_free_list var_5_lst var_4) -> + ((List.length var_3_lst) == (List.length tag_lst)) -> + Forall₂ (fun (var_3 : free) (v_tag : tag) => (fun_free_tag v_tag var_3)) var_3_lst tag_lst -> + (fun_free_list var_3_lst var_2) -> + ((List.length var_1_lst) == (List.length type_lst)) -> + Forall₂ (fun (var_1 : free) (v_type : type) => (fun_free_type v_type var_1)) var_1_lst type_lst -> + (fun_free_list var_1_lst var_0) -> + fun_free_module (.MODULE type_lst import_lst tag_lst global_lst mem_lst table_lst func_lst data_lst elem_lst start_opt export_lst) ((((((((((var_0 ++ var_2) ++ var_4) ++ var_6) ++ var_7) ++ var_9) ++ var_11) ++ var_13) ++ (free_opt (Option.map (fun (v_start : start) => (free_start v_start)) start_opt))) ++ var_15) ++ var_17) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:130.6-130.21 -/ +inductive fun_funcidx_module : module -> (List funcidx) -> Prop where + | fun_funcidx_module_case_0 : forall (v_module : module) (var_0 : free), + (fun_free_module v_module var_0) -> + fun_funcidx_module v_module (var_0.FUNCS) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec:133.6-133.20 -/ +inductive fun_dataidx_funcs : (List func) -> (List dataidx) -> Prop where + | fun_dataidx_funcs_case_0 : forall (func_lst : (List func)) (var_1_lst : (List free)) (var_0 : free), + ((List.length var_1_lst) == (List.length func_lst)) -> + Forall₂ (fun (var_1 : free) (v_func : func) => (fun_free_func v_func var_1)) var_1_lst func_lst -> + (fun_free_list var_1_lst var_0) -> + fun_dataidx_funcs func_lst (var_0.DATAS) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:8.1-9.16 -/ +inductive init : Type where + | SET : init + | UNSET : init +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:11.1-12.15 -/ +inductive localtype : Type where + | mk_localtype (v_init : init) (v_valtype : valtype) : localtype +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:11.8-11.17 -/ +inductive wf_localtype : localtype -> Prop where + | localtype_case_0 : forall (v_init : init) (v_valtype : valtype), + (wf_valtype v_valtype) -> + wf_localtype (.mk_localtype v_init v_valtype) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:14.1-15.56 -/ +inductive instrtype : Type where + | mk_instrtype (v_resulttype : resulttype) (localidx_lst : (List localidx)) (_ : resulttype) : instrtype +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:14.8-14.17 -/ +inductive wf_instrtype : instrtype -> Prop where + | instrtype_case_0 : forall (v_resulttype : resulttype) (localidx_lst : (List localidx)) (var_0 : resulttype), + Forall (fun (v_localidx : localidx) => (wf_uN 32 v_localidx)) localidx_lst -> + wf_instrtype (.mk_instrtype v_resulttype localidx_lst var_0) + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:24.1-38.4 -/ +structure context where MKcontext :: + TYPES : (List deftype) + RECS : (List subtype) + TAGS : (List tagtype) + GLOBALS : (List globaltype) + MEMS : (List memtype) + TABLES : (List tabletype) + FUNCS : (List deftype) + DATAS : (List datatype) + ELEMS : (List elemtype) + LOCALS : (List localtype) + LABELS : (List resulttype) + RETURN : (Option resulttype) + REFS : (List funcidx) +deriving Inhabited, BEq + +def _append_context (arg1 arg2 : (context)) : context where + TYPES := arg1.TYPES ++ arg2.TYPES + RECS := arg1.RECS ++ arg2.RECS + TAGS := arg1.TAGS ++ arg2.TAGS + GLOBALS := arg1.GLOBALS ++ arg2.GLOBALS + MEMS := arg1.MEMS ++ arg2.MEMS + TABLES := arg1.TABLES ++ arg2.TABLES + FUNCS := arg1.FUNCS ++ arg2.FUNCS + DATAS := arg1.DATAS ++ arg2.DATAS + ELEMS := arg1.ELEMS ++ arg2.ELEMS + LOCALS := arg1.LOCALS ++ arg2.LOCALS + LABELS := arg1.LABELS ++ arg2.LABELS + RETURN := arg1.RETURN ++ arg2.RETURN + REFS := arg1.REFS ++ arg2.REFS +instance : Append context where + append arg1 arg2 := _append_context arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:24.8-24.15 -/ +inductive wf_context : context -> Prop where + | context_case_ : forall (var_0 : (List deftype)) (var_1 : (List subtype)) (var_2 : (List tagtype)) (var_3 : (List globaltype)) (var_4 : (List memtype)) (var_5 : (List tabletype)) (var_6 : (List deftype)) (var_7 : (List datatype)) (var_8 : (List elemtype)) (var_9 : (List localtype)) (var_10 : (List resulttype)) (var_11 : (Option resulttype)) (var_12 : (List funcidx)), + Forall (fun (var_1 : subtype) => (wf_subtype var_1)) var_1 -> + Forall (fun (var_2 : tagtype) => (wf_typeuse var_2)) var_2 -> + Forall (fun (var_3 : globaltype) => (wf_globaltype var_3)) var_3 -> + Forall (fun (var_4 : memtype) => (wf_memtype var_4)) var_4 -> + Forall (fun (var_5 : tabletype) => (wf_tabletype var_5)) var_5 -> + Forall (fun (var_8 : elemtype) => (wf_reftype var_8)) var_8 -> + Forall (fun (var_9 : localtype) => (wf_localtype var_9)) var_9 -> + Forall (fun (var_12 : funcidx) => (wf_uN 32 var_12)) var_12 -> + wf_context { TYPES := var_0, RECS := var_1, TAGS := var_2, GLOBALS := var_3, MEMS := var_4, TABLES := var_5, FUNCS := var_6, DATAS := var_7, ELEMS := var_8, LOCALS := var_9, LABELS := var_10, RETURN := var_11, REFS := var_12 } + +/- Recursive Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 -/ +inductive fun_with_locals : context -> (List localidx) -> (List localtype) -> context -> Prop where + | fun_with_locals_case_0 : forall (C : context), fun_with_locals C [] [] C + | fun_with_locals_case_1 : forall (C : context) (x_1 : uN) (x_lst : (List idx)) (lct_1 : localtype) (lct_lst : (List localtype)) (var_0 : context), + (fun_with_locals (C <| LOCALS := (List.modify (C.LOCALS) (proj_uN_0 x_1) (fun (_ : localtype) => lct_1)) |>) x_lst lct_lst var_0) -> + fun_with_locals C ([x_1] ++ x_lst) ([lct_1] ++ lct_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.6-59.20 -/ +inductive fun_clos_deftypes : (List deftype) -> (List deftype) -> Prop where + | fun_clos_deftypes_case_0 : fun_clos_deftypes [] [] + | fun_clos_deftypes_case_1 : forall (dt_lst : (List deftype)) (dt_n : deftype) (dt'_lst : (List deftype)) (var_1 : (List deftype)) (var_0 : deftype), + (fun_clos_deftypes dt_lst var_1) -> + (fun_subst_all_deftype dt_n (List.map (fun (dt' : deftype) => (typeuse_deftype dt')) dt'_lst) var_0) -> + (dt'_lst == var_1) -> + fun_clos_deftypes (dt_lst ++ [dt_n]) (dt'_lst ++ [var_0]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:54.6-54.19 -/ +inductive fun_clos_valtype : context -> valtype -> valtype -> Prop where + | fun_clos_valtype_case_0 : forall (C : context) (t : valtype) (dt_lst : (List deftype)) (var_1 : (List deftype)) (var_0 : valtype), + (fun_clos_deftypes (C.TYPES) var_1) -> + (fun_subst_all_valtype t (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == var_1) -> + fun_clos_valtype C t var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:55.6-55.19 -/ +inductive fun_clos_deftype : context -> deftype -> deftype -> Prop where + | fun_clos_deftype_case_0 : forall (C : context) (dt : deftype) (dt'_lst : (List deftype)) (var_1 : (List deftype)) (var_0 : deftype), + (fun_clos_deftypes (C.TYPES) var_1) -> + (fun_subst_all_deftype dt (List.map (fun (dt' : deftype) => (typeuse_deftype dt')) dt'_lst) var_0) -> + (dt'_lst == var_1) -> + fun_clos_deftype C dt var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:56.6-56.19 -/ +inductive fun_clos_tagtype : context -> tagtype -> tagtype -> Prop where + | fun_clos_tagtype_case_0 : forall (C : context) (jt : typeuse) (dt_lst : (List deftype)) (var_1 : (List deftype)) (var_0 : tagtype), + (fun_clos_deftypes (C.TYPES) var_1) -> + (fun_subst_all_tagtype jt (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == var_1) -> + fun_clos_tagtype C jt var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:57.6-57.22 -/ +inductive fun_clos_externtype : context -> externtype -> externtype -> Prop where + | fun_clos_externtype_case_0 : forall (C : context) (xt : externtype) (dt_lst : (List deftype)) (var_1 : (List deftype)) (var_0 : externtype), + (fun_clos_deftypes (C.TYPES) var_1) -> + (fun_subst_all_externtype xt (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == var_1) -> + fun_clos_externtype C xt var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:58.6-58.22 -/ +inductive fun_clos_moduletype : context -> moduletype -> moduletype -> Prop where + | fun_clos_moduletype_case_0 : forall (C : context) (mmt : moduletype) (dt_lst : (List deftype)) (var_1 : (List deftype)) (var_0 : moduletype), + (fun_clos_deftypes (C.TYPES) var_1) -> + (fun_subst_all_moduletype mmt (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == var_1) -> + fun_clos_moduletype C mmt var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:7.1-7.91 -/ +inductive Numtype_ok : context -> numtype -> Prop where + | mk_Numtype_ok : forall (C : context) (v_numtype : numtype), Numtype_ok C v_numtype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:8.1-8.91 -/ +inductive Vectype_ok : context -> vectype -> Prop where + | mk_Vectype_ok : forall (C : context) (v_vectype : vectype), Vectype_ok C v_vectype + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:79.1-80.85 -/ +inductive oktypeidx : Type where + | OK (v_typeidx : typeidx) : oktypeidx +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:79.8-79.17 -/ +inductive wf_oktypeidx : oktypeidx -> Prop where + | oktypeidx_case_0 : forall (v_typeidx : typeidx), + (wf_uN 32 v_typeidx) -> + wf_oktypeidx (.OK v_typeidx) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:81.1-82.68 -/ +inductive oktypeidxnat : Type where + | OK (v_typeidx : typeidx) (nat : Nat) : oktypeidxnat +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:81.8-81.20 -/ +inductive wf_oktypeidxnat : oktypeidxnat -> Prop where + | oktypeidxnat_case_0 : forall (v_typeidx : typeidx) (nat : Nat), + (wf_uN 32 v_typeidx) -> + wf_oktypeidxnat (.OK v_typeidx nat) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:84.1-84.103 -/ +inductive Packtype_ok : context -> packtype -> Prop where + | mk_Packtype_ok : forall (C : context) (v_packtype : packtype), Packtype_ok C v_packtype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:133.1-133.116 -/ +inductive Packtype_sub : context -> packtype -> packtype -> Prop where + | mk_Packtype_sub : forall (C : context) (v_packtype : packtype), Packtype_sub C v_packtype v_packtype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:7.1-7.103 -/ +inductive Numtype_sub : context -> numtype -> numtype -> Prop where + | mk_Numtype_sub : forall (C : context) (v_numtype : numtype), Numtype_sub C v_numtype v_numtype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:65.1-66.70 -/ +inductive Expand : deftype -> comptype -> Prop where + | mk_Expand : forall (v_deftype : deftype) (v_comptype : comptype) (var_0 : comptype), + (fun_expanddt v_deftype var_0) -> + (var_0 == v_comptype) -> + Expand v_deftype v_comptype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:8.1-8.103 -/ +inductive Vectype_sub : context -> vectype -> vectype -> Prop where + | mk_Vectype_sub : forall (C : context) (v_vectype : vectype), Vectype_sub C v_vectype v_vectype + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:151.1-151.85 -/ +def before : ∀ (v_typeuse : typeuse) (v_typeidx : typeidx) (nat : Nat) , Bool + | (._DEF v_rectype v_n), x, i => + true + | (._IDX v_typeidx), x, i => + ((proj_uN_0 v_typeidx) < (proj_uN_0 x)) + | (.REC j), x, i => + (j < i) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:156.6-156.15 -/ +inductive fun_unrollht : context -> heaptype -> subtype -> Prop where + | fun_unrollht_case_0 : forall (v_rectype : rectype) (v_n : n) (C : context) (var_0 : subtype), + (fun_unrolldt (._DEF v_rectype v_n) var_0) -> + fun_unrollht C (._DEF v_rectype v_n) var_0 + | fun_unrollht_case_1 : forall (C : context) (v_typeidx : uN) (var_0 : subtype), + ((proj_uN_0 v_typeidx) < (List.length (C.TYPES))) -> + (fun_unrolldt ((C.TYPES)[(proj_uN_0 v_typeidx)]!) var_0) -> + fun_unrollht C (._IDX v_typeidx) var_0 + | fun_unrollht_case_2 : forall (C : context) (i : Nat), + (i < (List.length (C.RECS))) -> + fun_unrollht C (.REC i) ((C.RECS)[i]!) + +/- Recursive Definitions at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-135.117 -/ +mutual +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 -/ +inductive Heaptype_ok : context -> heaptype -> Prop where + | abs : forall (C : context) (v_absheaptype : absheaptype), Heaptype_ok C (heaptype_absheaptype v_absheaptype) + | typeuse : forall (C : context) (v_typeuse : typeuse), + (Typeuse_ok C v_typeuse) -> + Heaptype_ok C (heaptype_typeuse v_typeuse) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 -/ +inductive Reftype_ok : context -> reftype -> Prop where + | mk_Reftype_ok : forall (C : context) (v_heaptype : heaptype), + (Heaptype_ok C v_heaptype) -> + Reftype_ok C (.REF (some .NULL) v_heaptype) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 -/ +inductive Valtype_ok : context -> valtype -> Prop where + | num : forall (C : context) (v_numtype : numtype), + (Numtype_ok C v_numtype) -> + Valtype_ok C (valtype_numtype v_numtype) + | vec : forall (C : context) (v_vectype : vectype), + (Vectype_ok C v_vectype) -> + Valtype_ok C (valtype_vectype v_vectype) + | ref : forall (C : context) (v_reftype : reftype), + (Reftype_ok C v_reftype) -> + Valtype_ok C (valtype_reftype v_reftype) + | bot : forall (C : context), Valtype_ok C .BOT + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 -/ +inductive Typeuse_ok : context -> typeuse -> Prop where + | typeidx : forall (C : context) (v_typeidx : typeidx) (dt : deftype), + ((proj_uN_0 v_typeidx) < (List.length (C.TYPES))) -> + (((C.TYPES)[(proj_uN_0 v_typeidx)]!) == dt) -> + Typeuse_ok C (._IDX v_typeidx) + | rec_ : forall (C : context) (i : n) (st : subtype), + (i < (List.length (C.RECS))) -> + (((C.RECS)[i]!) == st) -> + Typeuse_ok C (.REC i) + | deftype : forall (C : context) (v_deftype : deftype), + (Deftype_ok C v_deftype) -> + Typeuse_ok C (typeuse_deftype v_deftype) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 -/ +inductive Resulttype_ok : context -> resulttype -> Prop where + | mk_Resulttype_ok : forall (C : context) (t_lst : (List valtype)), + Forall (fun (t : valtype) => (Valtype_ok C t)) t_lst -> + Resulttype_ok C (.mk_list t_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 -/ +inductive Fieldtype_ok : context -> fieldtype -> Prop where + | mk_Fieldtype_ok : forall (C : context) (v_storagetype : storagetype), + (Storagetype_ok C v_storagetype) -> + Fieldtype_ok C (.mk_fieldtype (some .MUT) v_storagetype) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 -/ +inductive Storagetype_ok : context -> storagetype -> Prop where + | val : forall (C : context) (v_valtype : valtype), + (Valtype_ok C v_valtype) -> + Storagetype_ok C (storagetype_valtype v_valtype) + | pack : forall (C : context) (v_packtype : packtype), + (Packtype_ok C v_packtype) -> + Storagetype_ok C (storagetype_packtype v_packtype) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 -/ +inductive Comptype_ok : context -> comptype -> Prop where + | struct : forall (C : context) (fieldtype_lst : (List fieldtype)), + Forall (fun (v_fieldtype : fieldtype) => (Fieldtype_ok C v_fieldtype)) fieldtype_lst -> + Comptype_ok C (.STRUCT (.mk_list fieldtype_lst)) + | array : forall (C : context) (v_fieldtype : fieldtype), + (Fieldtype_ok C v_fieldtype) -> + Comptype_ok C (.ARRAY v_fieldtype) + | func : forall (C : context) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + (Resulttype_ok C (.mk_list t_1_lst)) -> + (Resulttype_ok C (.mk_list t_2_lst)) -> + Comptype_ok C (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 -/ +inductive Subtype_ok : context -> subtype -> oktypeidx -> Prop where + | mk_Subtype_ok : forall (C : context) (x_lst : (List idx)) (v_comptype : comptype) (x_0 : idx) (x'_lst_lst : (List (List idx))) (comptype'_lst : (List comptype)) (var_0_lst : (List subtype)), + ((List.length var_0_lst) == (List.length x_lst)) -> + Forall (fun (x : idx) => ((proj_uN_0 x) < (List.length (C.TYPES)))) x_lst -> + Forall₂ (fun (var_0 : subtype) (x : idx) => (fun_unrolldt ((C.TYPES)[(proj_uN_0 x)]!) var_0)) var_0_lst x_lst -> + ((List.length x_lst) <= 1) -> + Forall (fun (x : idx) => ((proj_uN_0 x) < (proj_uN_0 x_0))) x_lst -> + ((List.length var_0_lst) == (List.length comptype'_lst)) -> + ((List.length var_0_lst) == (List.length x'_lst_lst)) -> + Forall₃ (fun (var_0 : subtype) (comptype' : comptype) (x'_lst : (List typeidx)) => (var_0 == (.SUB none (List.map (fun (x' : idx) => (._IDX x')) x'_lst) comptype'))) var_0_lst comptype'_lst x'_lst_lst -> + (Comptype_ok C v_comptype) -> + Forall (fun (comptype' : comptype) => (Comptype_sub C v_comptype comptype')) comptype'_lst -> + Subtype_ok C (.SUB (some .FINAL) (List.map (fun (x : idx) => (._IDX x)) x_lst) v_comptype) (.OK x_0) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 -/ +inductive Rectype_ok : context -> rectype -> oktypeidx -> Prop where + | empty : forall (C : context) (x : idx), Rectype_ok C (.REC (.mk_list [])) (.OK x) + | cons : forall (C : context) (subtype_1 : subtype) (subtype_lst : (List subtype)) (x : idx), + (Subtype_ok C subtype_1 (.OK x)) -> + (Rectype_ok C (.REC (.mk_list subtype_lst)) (.OK (.mk_uN ((proj_uN_0 x) + 1)))) -> + Rectype_ok C (.REC (.mk_list ([subtype_1] ++ subtype_lst))) (.OK x) + | _rec2 : forall (C : context) (subtype_lst : (List subtype)) (x : idx), + (Rectype_ok2 ({ TYPES := [], RECS := subtype_lst, TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } ++ C) (.REC (.mk_list subtype_lst)) (.OK x 0)) -> + Rectype_ok C (.REC (.mk_list subtype_lst)) (.OK x) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 -/ +inductive Subtype_ok2 : context -> subtype -> oktypeidxnat -> Prop where + | mk_Subtype_ok2 : forall (C : context) (typeuse_lst : (List typeuse)) (compttype : comptype) (x : idx) (i : Nat) (typeuse'_lst_lst : (List (List typeuse))) (comptype'_lst : (List comptype)) (v_comptype : comptype) (var_0_lst : (List subtype)), + ((List.length var_0_lst) == (List.length typeuse_lst)) -> + Forall₂ (fun (var_0 : subtype) (v_typeuse : typeuse) => (fun_unrollht C (heaptype_typeuse v_typeuse) var_0)) var_0_lst typeuse_lst -> + ((List.length typeuse_lst) <= 1) -> + Forall (fun (v_typeuse : typeuse) => (before v_typeuse x i)) typeuse_lst -> + ((List.length var_0_lst) == (List.length comptype'_lst)) -> + ((List.length var_0_lst) == (List.length typeuse'_lst_lst)) -> + Forall₃ (fun (var_0 : subtype) (comptype' : comptype) (typeuse'_lst : (List typeuse)) => (var_0 == (.SUB none typeuse'_lst comptype'))) var_0_lst comptype'_lst typeuse'_lst_lst -> + (Comptype_ok C v_comptype) -> + Forall (fun (comptype' : comptype) => (Comptype_sub C v_comptype comptype')) comptype'_lst -> + Subtype_ok2 C (.SUB (some .FINAL) typeuse_lst compttype) (.OK x i) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:91.1-91.126 -/ +inductive Rectype_ok2 : context -> rectype -> oktypeidxnat -> Prop where + | empty : forall (C : context) (x : idx) (i : Nat), Rectype_ok2 C (.REC (.mk_list [])) (.OK x i) + | cons : forall (C : context) (subtype_1 : subtype) (subtype_lst : (List subtype)) (x : idx) (i : Nat), + (Subtype_ok2 C subtype_1 (.OK x i)) -> + (Rectype_ok2 C (.REC (.mk_list subtype_lst)) (.OK (.mk_uN ((proj_uN_0 x) + 1)) (i + 1))) -> + Rectype_ok2 C (.REC (.mk_list ([subtype_1] ++ subtype_lst))) (.OK x i) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.102 -/ +inductive Deftype_ok : context -> deftype -> Prop where + | mk_Deftype_ok : forall (C : context) (v_rectype : rectype) (i : n) (x : idx) (subtype_lst : (List subtype)) (v_n : n), + (Rectype_ok C v_rectype (.OK x)) -> + (v_rectype == (.REC (.mk_list subtype_lst))) -> + (i < v_n) -> + Deftype_ok C (._DEF v_rectype i) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:95.1-95.108 -/ +inductive Comptype_sub : context -> comptype -> comptype -> Prop where + | struct : forall (C : context) (ft_1_lst : (List fieldtype)) (ft'_1_lst : (List fieldtype)) (ft_2_lst : (List fieldtype)), + ((List.length ft_1_lst) == (List.length ft_2_lst)) -> + Forall₂ (fun (ft_1 : fieldtype) (ft_2 : fieldtype) => (Fieldtype_sub C ft_1 ft_2)) ft_1_lst ft_2_lst -> + Comptype_sub C (.STRUCT (.mk_list (ft_1_lst ++ ft'_1_lst))) (.STRUCT (.mk_list ft_2_lst)) + | array : forall (C : context) (ft_1 : fieldtype) (ft_2 : fieldtype), + (Fieldtype_sub C ft_1 ft_2) -> + Comptype_sub C (.ARRAY ft_1) (.ARRAY ft_2) + | func : forall (C : context) (t_11_lst : (List valtype)) (t_12_lst : (List valtype)) (t_21_lst : (List valtype)) (t_22_lst : (List valtype)), + (Resulttype_sub C (.mk_list t_21_lst) (.mk_list t_11_lst)) -> + (Resulttype_sub C (.mk_list t_12_lst) (.mk_list t_22_lst)) -> + Comptype_sub C (.FUNC (.mk_list t_11_lst) (.mk_list t_12_lst)) (.FUNC (.mk_list t_21_lst) (.mk_list t_22_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 -/ +inductive Deftype_sub : context -> deftype -> deftype -> Prop where + | refl : forall (C : context) (deftype_1 : deftype) (deftype_2 : deftype) (var_1 : deftype) (var_0 : deftype), + (fun_clos_deftype C deftype_2 var_1) -> + (fun_clos_deftype C deftype_1 var_0) -> + (var_0 == var_1) -> + Deftype_sub C deftype_1 deftype_2 + | super : forall (C : context) (deftype_1 : deftype) (deftype_2 : deftype) (final_opt : (Option final)) (typeuse_lst : (List typeuse)) (ct : comptype) (i : Nat) (var_0 : subtype), + (fun_unrolldt deftype_1 var_0) -> + (var_0 == (.SUB final_opt typeuse_lst ct)) -> + (i < (List.length typeuse_lst)) -> + (Heaptype_sub C (heaptype_typeuse (typeuse_lst[i]!)) (heaptype_deftype deftype_2)) -> + Deftype_sub C deftype_1 deftype_2 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 -/ +inductive Heaptype_sub : context -> heaptype -> heaptype -> Prop where + | refl : forall (C : context) (v_heaptype : heaptype), Heaptype_sub C v_heaptype v_heaptype + | trans : forall (C : context) (heaptype_1 : heaptype) (heaptype_2 : heaptype) (heaptype' : heaptype), + (Heaptype_ok C heaptype') -> + (Heaptype_sub C heaptype_1 heaptype') -> + (Heaptype_sub C heaptype' heaptype_2) -> + Heaptype_sub C heaptype_1 heaptype_2 + | eq_any : forall (C : context), Heaptype_sub C .EQ .ANY + | i31_eq : forall (C : context), Heaptype_sub C .I31 .EQ + | struct_eq : forall (C : context), Heaptype_sub C .STRUCT .EQ + | array_eq : forall (C : context), Heaptype_sub C .ARRAY .EQ + | struct : forall (C : context) (v_deftype : deftype) (fieldtype_lst : (List fieldtype)), + (Expand v_deftype (.STRUCT (.mk_list fieldtype_lst))) -> + Heaptype_sub C (heaptype_deftype v_deftype) .STRUCT + | array : forall (C : context) (v_deftype : deftype) (v_fieldtype : fieldtype), + (Expand v_deftype (.ARRAY v_fieldtype)) -> + Heaptype_sub C (heaptype_deftype v_deftype) .ARRAY + | func : forall (C : context) (v_deftype : deftype) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + (Expand v_deftype (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + Heaptype_sub C (heaptype_deftype v_deftype) .FUNC + | def : forall (C : context) (deftype_1 : deftype) (deftype_2 : deftype), + (Deftype_sub C deftype_1 deftype_2) -> + Heaptype_sub C (heaptype_deftype deftype_1) (heaptype_deftype deftype_2) + | typeidx_l : forall (C : context) (v_typeidx : typeidx) (v_heaptype : heaptype), + ((proj_uN_0 v_typeidx) < (List.length (C.TYPES))) -> + (Heaptype_sub C (heaptype_deftype ((C.TYPES)[(proj_uN_0 v_typeidx)]!)) v_heaptype) -> + Heaptype_sub C (._IDX v_typeidx) v_heaptype + | typeidx_r : forall (C : context) (v_heaptype : heaptype) (v_typeidx : typeidx), + ((proj_uN_0 v_typeidx) < (List.length (C.TYPES))) -> + (Heaptype_sub C v_heaptype (heaptype_deftype ((C.TYPES)[(proj_uN_0 v_typeidx)]!))) -> + Heaptype_sub C v_heaptype (._IDX v_typeidx) + | rec_ : forall (C : context) (i : n) (typeuse_lst : (List typeuse)) (j : Nat) (final_opt : (Option final)) (ct : comptype), + (j < (List.length typeuse_lst)) -> + (i < (List.length (C.RECS))) -> + (((C.RECS)[i]!) == (.SUB final_opt typeuse_lst ct)) -> + Heaptype_sub C (.REC i) (heaptype_typeuse (typeuse_lst[j]!)) + | none : forall (C : context) (v_heaptype : heaptype), + (Heaptype_sub C v_heaptype .ANY) -> + Heaptype_sub C .NONE v_heaptype + | nofunc : forall (C : context) (v_heaptype : heaptype), + (Heaptype_sub C v_heaptype .FUNC) -> + Heaptype_sub C .NOFUNC v_heaptype + | noexn : forall (C : context) (v_heaptype : heaptype), + (Heaptype_sub C v_heaptype .EXN) -> + Heaptype_sub C .NOEXN v_heaptype + | noextern : forall (C : context) (v_heaptype : heaptype), + (Heaptype_sub C v_heaptype .EXTERN) -> + Heaptype_sub C .NOEXTERN v_heaptype + | bot : forall (C : context) (v_heaptype : heaptype), Heaptype_sub C .BOT v_heaptype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 -/ +inductive Reftype_sub : context -> reftype -> reftype -> Prop where + | nonnull : forall (C : context) (ht_1 : heaptype) (ht_2 : heaptype), + (Heaptype_sub C ht_1 ht_2) -> + Reftype_sub C (.REF none ht_1) (.REF none ht_2) + | null : forall (C : context) (ht_1 : heaptype) (ht_2 : heaptype), + (Heaptype_sub C ht_1 ht_2) -> + Reftype_sub C (.REF (some .NULL) ht_1) (.REF (some .NULL) ht_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 -/ +inductive Valtype_sub : context -> valtype -> valtype -> Prop where + | num : forall (C : context) (numtype_1 : numtype) (numtype_2 : numtype), + (Numtype_sub C numtype_1 numtype_2) -> + Valtype_sub C (valtype_numtype numtype_1) (valtype_numtype numtype_2) + | vec : forall (C : context) (vectype_1 : vectype) (vectype_2 : vectype), + (Vectype_sub C vectype_1 vectype_2) -> + Valtype_sub C (valtype_vectype vectype_1) (valtype_vectype vectype_2) + | ref : forall (C : context) (reftype_1 : reftype) (reftype_2 : reftype), + (Reftype_sub C reftype_1 reftype_2) -> + Valtype_sub C (valtype_reftype reftype_1) (valtype_reftype reftype_2) + | bot : forall (C : context) (v_valtype : valtype), Valtype_sub C .BOT v_valtype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 -/ +inductive Resulttype_sub : context -> resulttype -> resulttype -> Prop where + | mk_Resulttype_sub : forall (C : context) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + ((List.length t_1_lst) == (List.length t_2_lst)) -> + Forall₂ (fun (t_1 : valtype) (t_2 : valtype) => (Valtype_sub C t_1 t_2)) t_1_lst t_2_lst -> + Resulttype_sub C (.mk_list t_1_lst) (.mk_list t_2_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 -/ +inductive Storagetype_sub : context -> storagetype -> storagetype -> Prop where + | val : forall (C : context) (valtype_1 : valtype) (valtype_2 : valtype), + (Valtype_sub C valtype_1 valtype_2) -> + Storagetype_sub C (storagetype_valtype valtype_1) (storagetype_valtype valtype_2) + | pack : forall (C : context) (packtype_1 : packtype) (packtype_2 : packtype), + (Packtype_sub C packtype_1 packtype_2) -> + Storagetype_sub C (storagetype_packtype packtype_1) (storagetype_packtype packtype_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 -/ +inductive Fieldtype_sub : context -> fieldtype -> fieldtype -> Prop where + | const : forall (C : context) (zt_1 : storagetype) (zt_2 : storagetype), + (Storagetype_sub C zt_1 zt_2) -> + Fieldtype_sub C (.mk_fieldtype none zt_1) (.mk_fieldtype none zt_2) + | var : forall (C : context) (zt_1 : storagetype) (zt_2 : storagetype), + (Storagetype_sub C zt_1 zt_2) -> + (Storagetype_sub C zt_2 zt_1) -> + Fieldtype_sub C (.mk_fieldtype (some .MUT) zt_1) (.mk_fieldtype (some .MUT) zt_2) + +end + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:50.1-50.99 -/ +inductive Instrtype_ok : context -> instrtype -> Prop where + | mk_Instrtype_ok : forall (C : context) (t_1_lst : (List valtype)) (x_lst : (List idx)) (t_2_lst : (List valtype)) (lct_lst : (List localtype)), + (Resulttype_ok C (.mk_list t_1_lst)) -> + (Resulttype_ok C (.mk_list t_2_lst)) -> + ((List.length lct_lst) == (List.length x_lst)) -> + Forall (fun (x : idx) => ((proj_uN_0 x) < (List.length (C.LOCALS)))) x_lst -> + Forall₂ (fun (lct : localtype) (x : idx) => (((C.LOCALS)[(proj_uN_0 x)]!) == lct)) lct_lst x_lst -> + Instrtype_ok C (.mk_instrtype (.mk_list t_1_lst) x_lst (.mk_list t_2_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:68.1-69.70 -/ +inductive Expand_use : typeuse -> context -> comptype -> Prop where + | deftype : forall (v_deftype : deftype) (C : context) (v_comptype : comptype), + (Expand v_deftype v_comptype) -> + Expand_use (typeuse_deftype v_deftype) C v_comptype + | typeidx : forall (v_typeidx : typeidx) (C : context) (v_comptype : comptype), + ((proj_uN_0 v_typeidx) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 v_typeidx)]!) v_comptype) -> + Expand_use (._IDX v_typeidx) C v_comptype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:201.1-201.120 -/ +inductive Limits_ok : context -> limits -> Nat -> Prop where + | mk_Limits_ok : forall (C : context) (v_n : n) (m_opt : (Option m)) (k : Nat), + (v_n <= k) -> + Forall (fun (v_m : Nat) => ((v_n <= v_m) && (v_m <= k))) (Option.toList m_opt) -> + Limits_ok C (.mk_limits (.mk_uN v_n) (Option.map (fun (v_m : m) => (.mk_uN v_m)) m_opt)) k + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:202.1-202.97 -/ +inductive Tagtype_ok : context -> tagtype -> Prop where + | mk_Tagtype_ok : forall (C : context) (v_typeuse : typeuse) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + (Typeuse_ok C v_typeuse) -> + (Expand_use v_typeuse C (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + Tagtype_ok C v_typeuse + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:203.1-203.100 -/ +inductive Globaltype_ok : context -> globaltype -> Prop where + | mk_Globaltype_ok : forall (C : context) (t : valtype), + (Valtype_ok C t) -> + Globaltype_ok C (.mk_globaltype (some .MUT) t) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:204.1-204.97 -/ +inductive Memtype_ok : context -> memtype -> Prop where + | mk_Memtype_ok : forall (C : context) (v_addrtype : addrtype) (v_limits : limits), + (Limits_ok C v_limits (2 ^ 16)) -> + Memtype_ok C (.PAGE v_addrtype v_limits) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:205.1-205.99 -/ +inductive Tabletype_ok : context -> tabletype -> Prop where + | mk_Tabletype_ok : forall (C : context) (v_addrtype : addrtype) (v_limits : limits) (v_reftype : reftype), + (Limits_ok C v_limits ((((2 ^ 32) : Nat) - (1 : Nat)) : Nat)) -> + (Reftype_ok C v_reftype) -> + Tabletype_ok C (.mk_tabletype v_addrtype v_limits v_reftype) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.1-validation.types.spectec:206.1-206.100 -/ +inductive Externtype_ok : context -> externtype -> Prop where + | tag : forall (C : context) (v_tagtype : tagtype), + (Tagtype_ok C v_tagtype) -> + Externtype_ok C (.TAG v_tagtype) + | global : forall (C : context) (v_globaltype : globaltype), + (Globaltype_ok C v_globaltype) -> + Externtype_ok C (.GLOBAL v_globaltype) + | mem : forall (C : context) (v_memtype : memtype), + (Memtype_ok C v_memtype) -> + Externtype_ok C (.MEM v_memtype) + | table : forall (C : context) (v_tabletype : tabletype), + (Tabletype_ok C v_tabletype) -> + Externtype_ok C (.TABLE v_tabletype) + | func : forall (C : context) (v_typeuse : typeuse) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + (Typeuse_ok C v_typeuse) -> + (Expand_use v_typeuse C (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + Externtype_ok C (.FUNC v_typeuse) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:117.1-117.114 -/ +inductive Instrtype_sub : context -> instrtype -> instrtype -> Prop where + | mk_Instrtype_sub : forall (C : context) (t_11_lst : (List valtype)) (x_1_lst : (List idx)) (t_12_lst : (List valtype)) (t_21_lst : (List valtype)) (x_2_lst : (List idx)) (t_22_lst : (List valtype)) (x_lst : (List idx)) (t_lst : (List valtype)), + (Resulttype_sub C (.mk_list t_21_lst) (.mk_list t_11_lst)) -> + (Resulttype_sub C (.mk_list t_12_lst) (.mk_list t_22_lst)) -> + (x_lst == (setminus_ localidx x_2_lst x_1_lst)) -> + ((List.length t_lst) == (List.length x_lst)) -> + Forall (fun (x : idx) => ((proj_uN_0 x) < (List.length (C.LOCALS)))) x_lst -> + Forall₂ (fun (t : valtype) (x : idx) => (((C.LOCALS)[(proj_uN_0 x)]!) == (.mk_localtype .SET t))) t_lst x_lst -> + Instrtype_sub C (.mk_instrtype (.mk_list t_11_lst) x_1_lst (.mk_list t_12_lst)) (.mk_instrtype (.mk_list t_21_lst) x_2_lst (.mk_list t_22_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:191.1-191.110 -/ +inductive Limits_sub : context -> limits -> limits -> Prop where + | max : forall (C : context) (n_1 : n) (m_1 : m) (n_2 : n) (m_2_opt : (Option m)), + (n_1 >= n_2) -> + Forall (fun (m_2 : Nat) => (m_1 <= m_2)) (Option.toList m_2_opt) -> + Limits_sub C (.mk_limits (.mk_uN n_1) (some (.mk_uN m_1))) (.mk_limits (.mk_uN n_2) (Option.map (fun (m_2 : m) => (.mk_uN m_2)) m_2_opt)) + | eps : forall (C : context) (n_1 : n) (n_2 : n), + (n_1 >= n_2) -> + Limits_sub C (.mk_limits (.mk_uN n_1) none) (.mk_limits (.mk_uN n_2) none) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:192.1-192.111 -/ +inductive Tagtype_sub : context -> tagtype -> tagtype -> Prop where + | mk_Tagtype_sub : forall (C : context) (deftype_1 : deftype) (deftype_2 : deftype), + (Deftype_sub C deftype_1 deftype_2) -> + (Deftype_sub C deftype_2 deftype_1) -> + Tagtype_sub C (typeuse_deftype deftype_1) (typeuse_deftype deftype_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:193.1-193.114 -/ +inductive Globaltype_sub : context -> globaltype -> globaltype -> Prop where + | const : forall (C : context) (valtype_1 : valtype) (valtype_2 : valtype), + (Valtype_sub C valtype_1 valtype_2) -> + Globaltype_sub C (.mk_globaltype none valtype_1) (.mk_globaltype none valtype_2) + | var : forall (C : context) (valtype_1 : valtype) (valtype_2 : valtype), + (Valtype_sub C valtype_1 valtype_2) -> + (Valtype_sub C valtype_2 valtype_1) -> + Globaltype_sub C (.mk_globaltype (some .MUT) valtype_1) (.mk_globaltype (some .MUT) valtype_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:194.1-194.111 -/ +inductive Memtype_sub : context -> memtype -> memtype -> Prop where + | mk_Memtype_sub : forall (C : context) (v_addrtype : addrtype) (limits_1 : limits) (limits_2 : limits), + (Limits_sub C limits_1 limits_2) -> + Memtype_sub C (.PAGE v_addrtype limits_1) (.PAGE v_addrtype limits_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-195.113 -/ +inductive Tabletype_sub : context -> tabletype -> tabletype -> Prop where + | mk_Tabletype_sub : forall (C : context) (v_addrtype : addrtype) (limits_1 : limits) (reftype_1 : reftype) (limits_2 : limits) (reftype_2 : reftype), + (Limits_sub C limits_1 limits_2) -> + (Reftype_sub C reftype_1 reftype_2) -> + (Reftype_sub C reftype_2 reftype_1) -> + Tabletype_sub C (.mk_tabletype v_addrtype limits_1 reftype_1) (.mk_tabletype v_addrtype limits_2 reftype_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:196.1-196.114 -/ +inductive Externtype_sub : context -> externtype -> externtype -> Prop where + | tag : forall (C : context) (tagtype_1 : tagtype) (tagtype_2 : tagtype), + (Tagtype_sub C tagtype_1 tagtype_2) -> + Externtype_sub C (.TAG tagtype_1) (.TAG tagtype_2) + | global : forall (C : context) (globaltype_1 : globaltype) (globaltype_2 : globaltype), + (Globaltype_sub C globaltype_1 globaltype_2) -> + Externtype_sub C (.GLOBAL globaltype_1) (.GLOBAL globaltype_2) + | mem : forall (C : context) (memtype_1 : memtype) (memtype_2 : memtype), + (Memtype_sub C memtype_1 memtype_2) -> + Externtype_sub C (.MEM memtype_1) (.MEM memtype_2) + | table : forall (C : context) (tabletype_1 : tabletype) (tabletype_2 : tabletype), + (Tabletype_sub C tabletype_1 tabletype_2) -> + Externtype_sub C (.TABLE tabletype_1) (.TABLE tabletype_2) + | func : forall (C : context) (deftype_1 : deftype) (deftype_2 : deftype), + (Deftype_sub C deftype_1 deftype_2) -> + Externtype_sub C (.FUNC (typeuse_deftype deftype_1)) (.FUNC (typeuse_deftype deftype_2)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:42.1-42.121 -/ +inductive Blocktype_ok : context -> blocktype -> instrtype -> Prop where + | valtype : forall (C : context) (valtype_opt : (Option valtype)), + Forall (fun (v_valtype : valtype) => (Valtype_ok C v_valtype)) (Option.toList valtype_opt) -> + Blocktype_ok C (._RESULT valtype_opt) (.mk_instrtype (.mk_list []) [] (.mk_list (Option.toList valtype_opt))) + | typeidx : forall (C : context) (v_typeidx : typeidx) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + ((proj_uN_0 v_typeidx) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 v_typeidx)]!) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + Blocktype_ok C (._IDX v_typeidx) (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:164.1-164.77 -/ +inductive Catch_ok : context -> «catch» -> Prop where + | «catch» : forall (C : context) (x : idx) (l : labelidx) (t_lst : (List valtype)), + ((proj_uN_0 x) < (List.length (C.TAGS))) -> + (Expand (as_deftype ((C.TAGS)[(proj_uN_0 x)]!)) (.FUNC (.mk_list t_lst) (.mk_list []))) -> + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + (Resulttype_sub C (.mk_list t_lst) ((C.LABELS)[(proj_uN_0 l)]!)) -> + Catch_ok C (.CATCH x l) + | catch_ref : forall (C : context) (x : idx) (l : labelidx) (t_lst : (List valtype)), + ((proj_uN_0 x) < (List.length (C.TAGS))) -> + (Expand (as_deftype ((C.TAGS)[(proj_uN_0 x)]!)) (.FUNC (.mk_list t_lst) (.mk_list []))) -> + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + (Resulttype_sub C (.mk_list (t_lst ++ [(.REF none .EXN)])) ((C.LABELS)[(proj_uN_0 l)]!)) -> + Catch_ok C (.CATCH_REF x l) + | catch_all : forall (C : context) (l : labelidx), + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + (Resulttype_sub C (.mk_list []) ((C.LABELS)[(proj_uN_0 l)]!)) -> + Catch_ok C (.CATCH_ALL l) + | catch_all_ref : forall (C : context) (l : labelidx), + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + (Resulttype_sub C (.mk_list [(.REF none .EXN)]) ((C.LABELS)[(proj_uN_0 l)]!)) -> + Catch_ok C (.CATCH_ALL_REF l) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.1-execution.values.spectec:7.1-7.30 -/ +def default_ : ∀ (v_valtype : valtype) , (Option val) + | .I32 => + (some (.CONST (numtype_addrtype .I32) (.mk_num__0 .I32 (.mk_uN 0)))) + | .I64 => + (some (.CONST (numtype_addrtype .I64) (.mk_num__0 .I64 (.mk_uN 0)))) + | .F32 => + (some (.CONST (numtype_Fnn .F32) (.mk_num__1 .F32 (fzero (size (numtype_Fnn .F32)))))) + | .F64 => + (some (.CONST (numtype_Fnn .F64) (.mk_num__1 .F64 (fzero (size (numtype_Fnn .F64)))))) + | .V128 => + (some (.VCONST .V128 (.mk_uN 0))) + | (.REF (some .NULL) ht) => + (some (.REF_NULL ht)) + | (.REF none ht) => + none + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:9.1-10.71 -/ +inductive Defaultable : valtype -> Prop where + | mk_Defaultable : forall (t : valtype), + ((default_ t) != none) -> + Defaultable t + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-408.131 -/ +inductive Memarg_ok : memarg -> addrtype -> N -> Prop where + | mk_Memarg_ok : forall (v_n : n) (v_m : m) («at» : addrtype) (v_N : N), + (((2 ^ v_n) : Nat) <= ((v_N : Nat) / (8 : Nat))) -> + (v_m < (2 ^ (size (numtype_addrtype «at»)))) -> + Memarg_ok { ALIGN := (.mk_uN v_n), OFFSET := (.mk_uN v_m) } «at» v_N + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:255.1-255.111 -/ +def is_packtype : ∀ (v_storagetype : storagetype) , Bool + | zt => + (zt == (storagetype_valtype (unpack zt))) + + +/- Recursive Definitions at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-6.96 -/ +mutual +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 -/ +inductive Instr_ok : context -> instr -> instrtype -> Prop where + | nop : forall (C : context), Instr_ok C .NOP (.mk_instrtype (.mk_list []) [] (.mk_list [])) + | unreachable : forall (C : context) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + (Instrtype_ok C (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + Instr_ok C .UNREACHABLE (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst)) + | drop : forall (C : context) (t : valtype), + (Valtype_ok C t) -> + Instr_ok C .DROP (.mk_instrtype (.mk_list [t]) [] (.mk_list [])) + | select_expl : forall (C : context) (t : valtype), + (Valtype_ok C t) -> + Instr_ok C (.SELECT (some [t])) (.mk_instrtype (.mk_list [t, t, .I32]) [] (.mk_list [t])) + | select_impl : forall (C : context) (t : valtype) (t' : valtype) (v_numtype : numtype) (v_vectype : vectype), + (Valtype_ok C t) -> + (Valtype_sub C t t') -> + ((t' == (valtype_numtype v_numtype)) || (t' == (valtype_vectype v_vectype))) -> + Instr_ok C (.SELECT none) (.mk_instrtype (.mk_list [t, t, .I32]) [] (.mk_list [t])) + | block : forall (C : context) (bt : blocktype) (instr_lst : (List instr)) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (x_lst : (List idx)), + (Blocktype_ok C bt (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + (Instrs_ok ({ TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [(.mk_list t_2_lst)], RETURN := none, REFS := [] } ++ C) instr_lst (.mk_instrtype (.mk_list t_1_lst) x_lst (.mk_list t_2_lst))) -> + Instr_ok C (.BLOCK bt instr_lst) (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst)) + | loop : forall (C : context) (bt : blocktype) (instr_lst : (List instr)) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (x_lst : (List idx)), + (Blocktype_ok C bt (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + (Instrs_ok ({ TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [(.mk_list t_1_lst)], RETURN := none, REFS := [] } ++ C) instr_lst (.mk_instrtype (.mk_list t_1_lst) x_lst (.mk_list t_2_lst))) -> + Instr_ok C (.LOOP bt instr_lst) (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst)) + | if : forall (C : context) (bt : blocktype) (instr_1_lst : (List instr)) (instr_2_lst : (List instr)) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (x_1_lst : (List idx)) (x_2_lst : (List idx)), + (Blocktype_ok C bt (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + (Instrs_ok ({ TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [(.mk_list t_2_lst)], RETURN := none, REFS := [] } ++ C) instr_1_lst (.mk_instrtype (.mk_list t_1_lst) x_1_lst (.mk_list t_2_lst))) -> + (Instrs_ok ({ TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [(.mk_list t_2_lst)], RETURN := none, REFS := [] } ++ C) instr_2_lst (.mk_instrtype (.mk_list t_1_lst) x_2_lst (.mk_list t_2_lst))) -> + Instr_ok C (.IFELSE bt instr_1_lst instr_2_lst) (.mk_instrtype (.mk_list (t_1_lst ++ [.I32])) [] (.mk_list t_2_lst)) + | br : forall (C : context) (l : labelidx) (t_1_lst : (List valtype)) (t_lst : (List valtype)) (t_2_lst : (List valtype)), + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + ((proj_list_0 valtype ((C.LABELS)[(proj_uN_0 l)]!)) == t_lst) -> + (Instrtype_ok C (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + Instr_ok C (.BR l) (.mk_instrtype (.mk_list (t_1_lst ++ t_lst)) [] (.mk_list t_2_lst)) + | br_if : forall (C : context) (l : labelidx) (t_lst : (List valtype)), + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + ((proj_list_0 valtype ((C.LABELS)[(proj_uN_0 l)]!)) == t_lst) -> + Instr_ok C (.BR_IF l) (.mk_instrtype (.mk_list (t_lst ++ [.I32])) [] (.mk_list t_lst)) + | br_table : forall (C : context) (l_lst : (List labelidx)) (l' : labelidx) (t_1_lst : (List valtype)) (t_lst : (List valtype)) (t_2_lst : (List valtype)), + Forall (fun (l : labelidx) => ((proj_uN_0 l) < (List.length (C.LABELS)))) l_lst -> + Forall (fun (l : labelidx) => (Resulttype_sub C (.mk_list t_lst) ((C.LABELS)[(proj_uN_0 l)]!))) l_lst -> + ((proj_uN_0 l') < (List.length (C.LABELS))) -> + (Resulttype_sub C (.mk_list t_lst) ((C.LABELS)[(proj_uN_0 l')]!)) -> + (Instrtype_ok C (.mk_instrtype (.mk_list (t_1_lst ++ (t_lst ++ [.I32]))) [] (.mk_list t_2_lst))) -> + Instr_ok C (.BR_TABLE l_lst l') (.mk_instrtype (.mk_list (t_1_lst ++ (t_lst ++ [.I32]))) [] (.mk_list t_2_lst)) + | br_on_null : forall (C : context) (l : labelidx) (t_lst : (List valtype)) (ht : heaptype), + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + ((proj_list_0 valtype ((C.LABELS)[(proj_uN_0 l)]!)) == t_lst) -> + (Heaptype_ok C ht) -> + Instr_ok C (.BR_ON_NULL l) (.mk_instrtype (.mk_list (t_lst ++ [(.REF (some .NULL) ht)])) [] (.mk_list (t_lst ++ [(.REF none ht)]))) + | br_on_non_null : forall (C : context) (l : labelidx) (t_lst : (List valtype)) (ht : heaptype), + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + (((C.LABELS)[(proj_uN_0 l)]!) == (.mk_list (t_lst ++ [(.REF (some .NULL) ht)]))) -> + Instr_ok C (.BR_ON_NON_NULL l) (.mk_instrtype (.mk_list (t_lst ++ [(.REF (some .NULL) ht)])) [] (.mk_list t_lst)) + | br_on_cast : forall (C : context) (l : labelidx) (rt_1 : reftype) (rt_2 : reftype) (t_lst : (List valtype)) (rt : reftype), + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + (((C.LABELS)[(proj_uN_0 l)]!) == (.mk_list (t_lst ++ [(valtype_reftype rt)]))) -> + (Reftype_ok C rt_1) -> + (Reftype_ok C rt_2) -> + (Reftype_sub C rt_2 rt_1) -> + (Reftype_sub C rt_2 rt) -> + Instr_ok C (.BR_ON_CAST l rt_1 rt_2) (.mk_instrtype (.mk_list (t_lst ++ [(valtype_reftype rt_1)])) [] (.mk_list (t_lst ++ [(valtype_reftype (diffrt rt_1 rt_2))]))) + | br_on_cast_fail : forall (C : context) (l : labelidx) (rt_1 : reftype) (rt_2 : reftype) (t_lst : (List valtype)) (rt : reftype), + ((proj_uN_0 l) < (List.length (C.LABELS))) -> + (((C.LABELS)[(proj_uN_0 l)]!) == (.mk_list (t_lst ++ [(valtype_reftype rt)]))) -> + (Reftype_ok C rt_1) -> + (Reftype_ok C rt_2) -> + (Reftype_sub C rt_2 rt_1) -> + (Reftype_sub C (diffrt rt_1 rt_2) rt) -> + Instr_ok C (.BR_ON_CAST_FAIL l rt_1 rt_2) (.mk_instrtype (.mk_list (t_lst ++ [(valtype_reftype rt_1)])) [] (.mk_list (t_lst ++ [(valtype_reftype rt_2)]))) + | call : forall (C : context) (x : idx) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + ((proj_uN_0 x) < (List.length (C.FUNCS))) -> + (Expand ((C.FUNCS)[(proj_uN_0 x)]!) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + Instr_ok C (.CALL x) (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst)) + | call_ref : forall (C : context) (x : idx) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + Instr_ok C (.CALL_REF (._IDX x)) (.mk_instrtype (.mk_list (t_1_lst ++ [(.REF (some .NULL) (._IDX x))])) [] (.mk_list t_2_lst)) + | call_indirect : forall (C : context) (x : idx) (y : idx) (t_1_lst : (List valtype)) («at» : addrtype) (t_2_lst : (List valtype)) (lim : limits) (rt : reftype), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt)) -> + (Reftype_sub C rt (.REF (some .NULL) .FUNC)) -> + ((proj_uN_0 y) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 y)]!) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + Instr_ok C (.CALL_INDIRECT x (._IDX y)) (.mk_instrtype (.mk_list (t_1_lst ++ [(valtype_addrtype «at»)])) [] (.mk_list t_2_lst)) + | return : forall (C : context) (t_1_lst : (List valtype)) (t_lst : (List valtype)) (t_2_lst : (List valtype)), + ((C.RETURN) == (some (.mk_list t_lst))) -> + (Instrtype_ok C (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + Instr_ok C .RETURN (.mk_instrtype (.mk_list (t_1_lst ++ t_lst)) [] (.mk_list t_2_lst)) + | return_call : forall (C : context) (x : idx) (t_3_lst : (List valtype)) (t_1_lst : (List valtype)) (t_4_lst : (List valtype)) (t_2_lst : (List valtype)) (t'_2_lst : (List valtype)), + ((proj_uN_0 x) < (List.length (C.FUNCS))) -> + (Expand ((C.FUNCS)[(proj_uN_0 x)]!) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + ((C.RETURN) == (some (.mk_list t'_2_lst))) -> + (Resulttype_sub C (.mk_list t_2_lst) (.mk_list t'_2_lst)) -> + (Instrtype_ok C (.mk_instrtype (.mk_list t_3_lst) [] (.mk_list t_4_lst))) -> + Instr_ok C (.RETURN_CALL x) (.mk_instrtype (.mk_list (t_3_lst ++ t_1_lst)) [] (.mk_list t_4_lst)) + | return_call_ref : forall (C : context) (x : idx) (t_3_lst : (List valtype)) (t_1_lst : (List valtype)) (t_4_lst : (List valtype)) (t_2_lst : (List valtype)) (t'_2_lst : (List valtype)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + ((C.RETURN) == (some (.mk_list t'_2_lst))) -> + (Resulttype_sub C (.mk_list t_2_lst) (.mk_list t'_2_lst)) -> + (Instrtype_ok C (.mk_instrtype (.mk_list t_3_lst) [] (.mk_list t_4_lst))) -> + Instr_ok C (.RETURN_CALL_REF (._IDX x)) (.mk_instrtype (.mk_list (t_3_lst ++ (t_1_lst ++ [(.REF (some .NULL) (._IDX x))]))) [] (.mk_list t_4_lst)) + | return_call_indirect : forall (C : context) (x : idx) (y : idx) (t_3_lst : (List valtype)) (t_1_lst : (List valtype)) («at» : addrtype) (t_4_lst : (List valtype)) (lim : limits) (rt : reftype) (t_2_lst : (List valtype)) (t'_2_lst : (List valtype)), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt)) -> + (Reftype_sub C rt (.REF (some .NULL) .FUNC)) -> + ((proj_uN_0 y) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 y)]!) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + ((C.RETURN) == (some (.mk_list t'_2_lst))) -> + (Resulttype_sub C (.mk_list t_2_lst) (.mk_list t'_2_lst)) -> + (Instrtype_ok C (.mk_instrtype (.mk_list t_3_lst) [] (.mk_list t_4_lst))) -> + Instr_ok C (.RETURN_CALL_INDIRECT x (._IDX y)) (.mk_instrtype (.mk_list (t_3_lst ++ (t_1_lst ++ [(valtype_addrtype «at»)]))) [] (.mk_list t_4_lst)) + | throw : forall (C : context) (x : idx) (t_1_lst : (List valtype)) (t_lst : (List valtype)) (t_2_lst : (List valtype)), + ((proj_uN_0 x) < (List.length (C.TAGS))) -> + (Expand (as_deftype ((C.TAGS)[(proj_uN_0 x)]!)) (.FUNC (.mk_list t_lst) (.mk_list []))) -> + (Instrtype_ok C (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + Instr_ok C (.THROW x) (.mk_instrtype (.mk_list (t_1_lst ++ t_lst)) [] (.mk_list t_2_lst)) + | throw_ref : forall (C : context) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + (Instrtype_ok C (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + Instr_ok C .THROW_REF (.mk_instrtype (.mk_list (t_1_lst ++ [(.REF (some .NULL) .EXN)])) [] (.mk_list t_2_lst)) + | try_table : forall (C : context) (bt : blocktype) (catch_lst : (List «catch»)) (instr_lst : (List instr)) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (x_lst : (List idx)), + (Blocktype_ok C bt (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + (Instrs_ok ({ TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [(.mk_list t_2_lst)], RETURN := none, REFS := [] } ++ C) instr_lst (.mk_instrtype (.mk_list t_1_lst) x_lst (.mk_list t_2_lst))) -> + Forall (fun (v_catch : «catch») => (Catch_ok C v_catch)) catch_lst -> + Instr_ok C (.TRY_TABLE bt (.mk_list catch_lst) instr_lst) (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst)) + | ref_null : forall (C : context) (ht : heaptype), + (Heaptype_ok C ht) -> + Instr_ok C (.REF_NULL ht) (.mk_instrtype (.mk_list []) [] (.mk_list [(.REF (some .NULL) ht)])) + | ref_func : forall (C : context) (x : idx) (dt : deftype), + ((proj_uN_0 x) < (List.length (C.FUNCS))) -> + (((C.FUNCS)[(proj_uN_0 x)]!) == dt) -> + ((List.length (C.REFS)) > 0) -> + (List.contains (C.REFS) x) -> + Instr_ok C (.REF_FUNC x) (.mk_instrtype (.mk_list []) [] (.mk_list [(.REF none (heaptype_deftype dt))])) + | ref_i31 : forall (C : context), Instr_ok C .REF_I31 (.mk_instrtype (.mk_list [.I32]) [] (.mk_list [(.REF none .I31)])) + | ref_is_null : forall (C : context) (ht : heaptype), + (Heaptype_ok C ht) -> + Instr_ok C .REF_IS_NULL (.mk_instrtype (.mk_list [(.REF (some .NULL) ht)]) [] (.mk_list [.I32])) + | ref_as_non_null : forall (C : context) (ht : heaptype), + (Heaptype_ok C ht) -> + Instr_ok C .REF_AS_NON_NULL (.mk_instrtype (.mk_list [(.REF (some .NULL) ht)]) [] (.mk_list [(.REF none ht)])) + | ref_eq : forall (C : context), Instr_ok C .REF_EQ (.mk_instrtype (.mk_list [(.REF (some .NULL) .EQ), (.REF (some .NULL) .EQ)]) [] (.mk_list [.I32])) + | ref_test : forall (C : context) (rt : reftype) (rt' : reftype), + (Reftype_ok C rt) -> + (Reftype_ok C rt') -> + (Reftype_sub C rt rt') -> + Instr_ok C (.REF_TEST rt) (.mk_instrtype (.mk_list [(valtype_reftype rt')]) [] (.mk_list [.I32])) + | ref_cast : forall (C : context) (rt : reftype) (rt' : reftype), + (Reftype_ok C rt) -> + (Reftype_ok C rt') -> + (Reftype_sub C rt rt') -> + Instr_ok C (.REF_CAST rt) (.mk_instrtype (.mk_list [(valtype_reftype rt')]) [] (.mk_list [(valtype_reftype rt)])) + | i31_get : forall (C : context) (v_sx : sx), Instr_ok C (.I31_GET v_sx) (.mk_instrtype (.mk_list [(.REF (some .NULL) .I31)]) [] (.mk_list [.I32])) + | struct_new : forall (C : context) (x : idx) (zt_lst : (List storagetype)) (mut_opt_lst : (List (Option «mut»))), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.STRUCT (.mk_list (List.zipWith (fun (mut_opt : (Option «mut»)) (zt : storagetype) => (.mk_fieldtype mut_opt zt)) mut_opt_lst zt_lst)))) -> + Instr_ok C (.STRUCT_NEW x) (.mk_instrtype (.mk_list (List.map (fun (zt : storagetype) => (unpack zt)) zt_lst)) [] (.mk_list [(.REF none (._IDX x))])) + | struct_new_default : forall (C : context) (x : idx) (mut_opt_lst : (List (Option «mut»))) (zt_lst : (List storagetype)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.STRUCT (.mk_list (List.zipWith (fun (mut_opt : (Option «mut»)) (zt : storagetype) => (.mk_fieldtype mut_opt zt)) mut_opt_lst zt_lst)))) -> + Forall (fun (zt : storagetype) => (Defaultable (unpack zt))) zt_lst -> + Instr_ok C (.STRUCT_NEW_DEFAULT x) (.mk_instrtype (.mk_list []) [] (.mk_list [(.REF none (._IDX x))])) + | struct_get : forall (C : context) (sx_opt : (Option sx)) (x : idx) (i : u32) (zt : storagetype) (ft_lst : (List fieldtype)) (mut_opt : (Option «mut»)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.STRUCT (.mk_list ft_lst))) -> + ((proj_uN_0 i) < (List.length ft_lst)) -> + ((ft_lst[(proj_uN_0 i)]!) == (.mk_fieldtype mut_opt zt)) -> + ((sx_opt == none) <-> (is_packtype zt)) -> + Instr_ok C (.STRUCT_GET sx_opt x i) (.mk_instrtype (.mk_list [(.REF (some .NULL) (._IDX x))]) [] (.mk_list [(unpack zt)])) + | struct_set : forall (C : context) (x : idx) (i : u32) (zt : storagetype) (ft_lst : (List fieldtype)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.STRUCT (.mk_list ft_lst))) -> + ((proj_uN_0 i) < (List.length ft_lst)) -> + ((ft_lst[(proj_uN_0 i)]!) == (.mk_fieldtype (some .MUT) zt)) -> + Instr_ok C (.STRUCT_SET x i) (.mk_instrtype (.mk_list [(.REF (some .NULL) (._IDX x)), (unpack zt)]) [] (.mk_list [])) + | array_new : forall (C : context) (x : idx) (zt : storagetype) (mut_opt : (Option «mut»)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + Instr_ok C (.ARRAY_NEW x) (.mk_instrtype (.mk_list [(unpack zt), .I32]) [] (.mk_list [(.REF none (._IDX x))])) + | array_new_default : forall (C : context) (x : idx) (mut_opt : (Option «mut»)) (zt : storagetype), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + (Defaultable (unpack zt)) -> + Instr_ok C (.ARRAY_NEW_DEFAULT x) (.mk_instrtype (.mk_list [.I32]) [] (.mk_list [(.REF none (._IDX x))])) + | array_new_fixed : forall (C : context) (x : idx) (v_n : n) (zt : storagetype) (mut_opt : (Option «mut»)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + Instr_ok C (.ARRAY_NEW_FIXED x (.mk_uN v_n)) (.mk_instrtype (.mk_list (List.replicate v_n (unpack zt))) [] (.mk_list [(.REF none (._IDX x))])) + | array_new_elem : forall (C : context) (x : idx) (y : idx) (mut_opt : (Option «mut»)) (rt : reftype), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype mut_opt (storagetype_reftype rt)))) -> + ((proj_uN_0 y) < (List.length (C.ELEMS))) -> + (Reftype_sub C ((C.ELEMS)[(proj_uN_0 y)]!) rt) -> + Instr_ok C (.ARRAY_NEW_ELEM x y) (.mk_instrtype (.mk_list [.I32, .I32]) [] (.mk_list [(.REF none (._IDX x))])) + | array_new_data : forall (C : context) (x : idx) (y : idx) (mut_opt : (Option «mut»)) (zt : storagetype) (v_numtype : numtype) (v_vectype : vectype), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + (((unpack zt) == (valtype_numtype v_numtype)) || ((unpack zt) == (valtype_vectype v_vectype))) -> + ((proj_uN_0 y) < (List.length (C.DATAS))) -> + (((C.DATAS)[(proj_uN_0 y)]!) == .OK) -> + Instr_ok C (.ARRAY_NEW_DATA x y) (.mk_instrtype (.mk_list [.I32, .I32]) [] (.mk_list [(.REF none (._IDX x))])) + | array_get : forall (C : context) (sx_opt : (Option sx)) (x : idx) (zt : storagetype) (mut_opt : (Option «mut»)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((sx_opt == none) <-> (is_packtype zt)) -> + Instr_ok C (.ARRAY_GET sx_opt x) (.mk_instrtype (.mk_list [(.REF (some .NULL) (._IDX x)), .I32]) [] (.mk_list [(unpack zt)])) + | array_set : forall (C : context) (x : idx) (zt : storagetype), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype (some .MUT) zt))) -> + Instr_ok C (.ARRAY_SET x) (.mk_instrtype (.mk_list [(.REF (some .NULL) (._IDX x)), .I32, (unpack zt)]) [] (.mk_list [])) + | array_len : forall (C : context), Instr_ok C .ARRAY_LEN (.mk_instrtype (.mk_list [(.REF (some .NULL) .ARRAY)]) [] (.mk_list [.I32])) + | array_fill : forall (C : context) (x : idx) (zt : storagetype), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype (some .MUT) zt))) -> + Instr_ok C (.ARRAY_FILL x) (.mk_instrtype (.mk_list [(.REF (some .NULL) (._IDX x)), .I32, (unpack zt), .I32]) [] (.mk_list [])) + | array_copy : forall (C : context) (x_1 : idx) (x_2 : idx) (zt_1 : storagetype) (mut_opt : (Option «mut»)) (zt_2 : storagetype), + ((proj_uN_0 x_1) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x_1)]!) (.ARRAY (.mk_fieldtype (some .MUT) zt_1))) -> + ((proj_uN_0 x_2) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x_2)]!) (.ARRAY (.mk_fieldtype mut_opt zt_2))) -> + (Storagetype_sub C zt_2 zt_1) -> + Instr_ok C (.ARRAY_COPY x_1 x_2) (.mk_instrtype (.mk_list [(.REF (some .NULL) (._IDX x_1)), .I32, (.REF (some .NULL) (._IDX x_2)), .I32, .I32]) [] (.mk_list [])) + | array_init_elem : forall (C : context) (x : idx) (y : idx) (zt : storagetype), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype (some .MUT) zt))) -> + ((proj_uN_0 y) < (List.length (C.ELEMS))) -> + (Storagetype_sub C (storagetype_reftype ((C.ELEMS)[(proj_uN_0 y)]!)) zt) -> + Instr_ok C (.ARRAY_INIT_ELEM x y) (.mk_instrtype (.mk_list [(.REF (some .NULL) (._IDX x)), .I32, .I32, .I32]) [] (.mk_list [])) + | array_init_data : forall (C : context) (x : idx) (y : idx) (zt : storagetype) (v_numtype : numtype) (v_vectype : vectype), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.ARRAY (.mk_fieldtype (some .MUT) zt))) -> + (((unpack zt) == (valtype_numtype v_numtype)) || ((unpack zt) == (valtype_vectype v_vectype))) -> + ((proj_uN_0 y) < (List.length (C.DATAS))) -> + (((C.DATAS)[(proj_uN_0 y)]!) == .OK) -> + Instr_ok C (.ARRAY_INIT_DATA x y) (.mk_instrtype (.mk_list [(.REF (some .NULL) (._IDX x)), .I32, .I32, .I32]) [] (.mk_list [])) + | extern_convert_any : forall (C : context) (null_1_opt : (Option null)) (null_2_opt : (Option null)), + (null_1_opt == null_2_opt) -> + Instr_ok C .EXTERN_CONVERT_ANY (.mk_instrtype (.mk_list [(.REF null_1_opt .ANY)]) [] (.mk_list [(.REF null_2_opt .EXTERN)])) + | any_convert_extern : forall (C : context) (null_1_opt : (Option null)) (null_2_opt : (Option null)), + (null_1_opt == null_2_opt) -> + Instr_ok C .ANY_CONVERT_EXTERN (.mk_instrtype (.mk_list [(.REF null_1_opt .EXTERN)]) [] (.mk_list [(.REF null_2_opt .ANY)])) + | local_get : forall (C : context) (x : idx) (t : valtype), + ((proj_uN_0 x) < (List.length (C.LOCALS))) -> + (((C.LOCALS)[(proj_uN_0 x)]!) == (.mk_localtype .SET t)) -> + Instr_ok C (.LOCAL_GET x) (.mk_instrtype (.mk_list []) [] (.mk_list [t])) + | local_set : forall (C : context) (x : idx) (t : valtype) (v_init : init), + ((proj_uN_0 x) < (List.length (C.LOCALS))) -> + (((C.LOCALS)[(proj_uN_0 x)]!) == (.mk_localtype v_init t)) -> + Instr_ok C (.LOCAL_SET x) (.mk_instrtype (.mk_list [t]) [x] (.mk_list [])) + | local_tee : forall (C : context) (x : idx) (t : valtype) (v_init : init), + ((proj_uN_0 x) < (List.length (C.LOCALS))) -> + (((C.LOCALS)[(proj_uN_0 x)]!) == (.mk_localtype v_init t)) -> + Instr_ok C (.LOCAL_TEE x) (.mk_instrtype (.mk_list [t]) [x] (.mk_list [t])) + | global_get : forall (C : context) (x : idx) (t : valtype) (mut_opt : (Option «mut»)), + ((proj_uN_0 x) < (List.length (C.GLOBALS))) -> + (((C.GLOBALS)[(proj_uN_0 x)]!) == (.mk_globaltype mut_opt t)) -> + Instr_ok C (.GLOBAL_GET x) (.mk_instrtype (.mk_list []) [] (.mk_list [t])) + | global_set : forall (C : context) (x : idx) (t : valtype), + ((proj_uN_0 x) < (List.length (C.GLOBALS))) -> + (((C.GLOBALS)[(proj_uN_0 x)]!) == (.mk_globaltype (some .MUT) t)) -> + Instr_ok C (.GLOBAL_SET x) (.mk_instrtype (.mk_list [t]) [] (.mk_list [])) + | table_get : forall (C : context) (x : idx) («at» : addrtype) (rt : reftype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt)) -> + Instr_ok C (.TABLE_GET x) (.mk_instrtype (.mk_list [(valtype_addrtype «at»)]) [] (.mk_list [(valtype_reftype rt)])) + | table_set : forall (C : context) (x : idx) («at» : addrtype) (rt : reftype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt)) -> + Instr_ok C (.TABLE_SET x) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), (valtype_reftype rt)]) [] (.mk_list [])) + | table_size : forall (C : context) (x : idx) («at» : addrtype) (lim : limits) (rt : reftype), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt)) -> + Instr_ok C (.TABLE_SIZE x) (.mk_instrtype (.mk_list []) [] (.mk_list [(valtype_addrtype «at»)])) + | table_grow : forall (C : context) (x : idx) (rt : reftype) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt)) -> + Instr_ok C (.TABLE_GROW x) (.mk_instrtype (.mk_list [(valtype_reftype rt), (valtype_addrtype «at»)]) [] (.mk_list [.I32])) + | table_fill : forall (C : context) (x : idx) («at» : addrtype) (rt : reftype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt)) -> + Instr_ok C (.TABLE_FILL x) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), (valtype_reftype rt), (valtype_addrtype «at»)]) [] (.mk_list [])) + | table_copy : forall (C : context) (x_1 : idx) (x_2 : idx) (at_1 : addrtype) (at_2 : addrtype) (lim_1 : limits) (rt_1 : reftype) (lim_2 : limits) (rt_2 : reftype), + ((proj_uN_0 x_1) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x_1)]!) == (.mk_tabletype at_1 lim_1 rt_1)) -> + ((proj_uN_0 x_2) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x_2)]!) == (.mk_tabletype at_2 lim_2 rt_2)) -> + (Reftype_sub C rt_2 rt_1) -> + Instr_ok C (.TABLE_COPY x_1 x_2) (.mk_instrtype (.mk_list [(valtype_addrtype at_1), (valtype_addrtype at_2), (valtype_addrtype (minat at_1 at_2))]) [] (.mk_list [])) + | table_init : forall (C : context) (x : idx) (y : idx) («at» : addrtype) (lim : limits) (rt_1 : reftype) (rt_2 : reftype), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt_1)) -> + ((proj_uN_0 y) < (List.length (C.ELEMS))) -> + (((C.ELEMS)[(proj_uN_0 y)]!) == rt_2) -> + (Reftype_sub C rt_2 rt_1) -> + Instr_ok C (.TABLE_INIT x y) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), .I32, .I32]) [] (.mk_list [])) + | elem_drop : forall (C : context) (x : idx) (rt : reftype), + ((proj_uN_0 x) < (List.length (C.ELEMS))) -> + (((C.ELEMS)[(proj_uN_0 x)]!) == rt) -> + Instr_ok C (.ELEM_DROP x) (.mk_instrtype (.mk_list []) [] (.mk_list [])) + | memory_size : forall (C : context) (x : idx) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + Instr_ok C (.MEMORY_SIZE x) (.mk_instrtype (.mk_list []) [] (.mk_list [(valtype_addrtype «at»)])) + | memory_grow : forall (C : context) (x : idx) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + Instr_ok C (.MEMORY_GROW x) (.mk_instrtype (.mk_list [(valtype_addrtype «at»)]) [] (.mk_list [(valtype_addrtype «at»)])) + | memory_fill : forall (C : context) (x : idx) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + Instr_ok C (.MEMORY_FILL x) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), .I32, (valtype_addrtype «at»)]) [] (.mk_list [])) + | memory_copy : forall (C : context) (x_1 : idx) (x_2 : idx) (at_1 : addrtype) (at_2 : addrtype) (lim_1 : limits) (lim_2 : limits), + ((proj_uN_0 x_1) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x_1)]!) == (.PAGE at_1 lim_1)) -> + ((proj_uN_0 x_2) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x_2)]!) == (.PAGE at_2 lim_2)) -> + Instr_ok C (.MEMORY_COPY x_1 x_2) (.mk_instrtype (.mk_list [(valtype_addrtype at_1), (valtype_addrtype at_2), (valtype_addrtype (minat at_1 at_2))]) [] (.mk_list [])) + | memory_init : forall (C : context) (x : idx) (y : idx) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + ((proj_uN_0 y) < (List.length (C.DATAS))) -> + (((C.DATAS)[(proj_uN_0 y)]!) == .OK) -> + Instr_ok C (.MEMORY_INIT x y) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), .I32, .I32]) [] (.mk_list [])) + | data_drop : forall (C : context) (x : idx), + ((proj_uN_0 x) < (List.length (C.DATAS))) -> + (((C.DATAS)[(proj_uN_0 x)]!) == .OK) -> + Instr_ok C (.DATA_DROP x) (.mk_instrtype (.mk_list []) [] (.mk_list [])) + | load_val : forall (C : context) (nt : numtype) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» (size nt)) -> + Instr_ok C (.LOAD nt none x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»)]) [] (.mk_list [(valtype_numtype nt)])) + | load_pack : forall (C : context) (v_Inn : Inn) (v_M : M) (v_sx : sx) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» v_M) -> + Instr_ok C (.LOAD (numtype_addrtype v_Inn) (some (.mk_loadop__0 v_Inn (.mk_loadop_Inn (.mk_sz v_M) v_sx))) x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»)]) [] (.mk_list [(valtype_addrtype v_Inn)])) + | store_val : forall (C : context) (nt : numtype) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» (size nt)) -> + Instr_ok C (.STORE nt none x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), (valtype_numtype nt)]) [] (.mk_list [])) + | store_pack : forall (C : context) (v_Inn : Inn) (v_M : M) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» v_M) -> + Instr_ok C (.STORE (numtype_addrtype v_Inn) (some (.mk_storeop__0 v_Inn (.mk_storeop_Inn (.mk_sz v_M)))) x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), (valtype_addrtype v_Inn)]) [] (.mk_list [])) + | vload_val : forall (C : context) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» (vsize .V128)) -> + Instr_ok C (.VLOAD .V128 none x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»)]) [] (.mk_list [.V128])) + | vload_pack : forall (C : context) (v_M : M) (v_N : N) (v_sx : sx) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» (v_M * v_N)) -> + Instr_ok C (.VLOAD .V128 (some (.SHAPEX_ (.mk_sz v_M) v_N v_sx)) x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»)]) [] (.mk_list [.V128])) + | vload_splat : forall (C : context) (v_N : N) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» v_N) -> + Instr_ok C (.VLOAD .V128 (some (.SPLAT (.mk_sz v_N))) x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»)]) [] (.mk_list [.V128])) + | vload_zero : forall (C : context) (v_N : N) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» v_N) -> + Instr_ok C (.VLOAD .V128 (some (.ZERO (.mk_sz v_N))) x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»)]) [] (.mk_list [.V128])) + | vload_lane : forall (C : context) (v_N : N) (x : idx) (v_memarg : memarg) (i : laneidx) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» v_N) -> + (((proj_uN_0 i) : Nat) < ((128 : Nat) / (v_N : Nat))) -> + Instr_ok C (.VLOAD_LANE .V128 (.mk_sz v_N) x v_memarg i) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), .V128]) [] (.mk_list [.V128])) + | vstore : forall (C : context) (x : idx) (v_memarg : memarg) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» (vsize .V128)) -> + Instr_ok C (.VSTORE .V128 x v_memarg) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), .V128]) [] (.mk_list [])) + | vstore_lane : forall (C : context) (v_N : N) (x : idx) (v_memarg : memarg) (i : laneidx) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Memarg_ok v_memarg «at» v_N) -> + (((proj_uN_0 i) : Nat) < ((128 : Nat) / (v_N : Nat))) -> + Instr_ok C (.VSTORE_LANE .V128 (.mk_sz v_N) x v_memarg i) (.mk_instrtype (.mk_list [(valtype_addrtype «at»), .V128]) [] (.mk_list [])) + | const : forall (C : context) (nt : numtype) (c_nt : num_), + (wf_num_ nt c_nt) -> + Instr_ok C (.CONST nt c_nt) (.mk_instrtype (.mk_list []) [] (.mk_list [(valtype_numtype nt)])) + | unop : forall (C : context) (nt : numtype) (unop_nt : unop_), + (wf_unop_ nt unop_nt) -> + Instr_ok C (.UNOP nt unop_nt) (.mk_instrtype (.mk_list [(valtype_numtype nt)]) [] (.mk_list [(valtype_numtype nt)])) + | binop : forall (C : context) (nt : numtype) (binop_nt : binop_), + (wf_binop_ nt binop_nt) -> + Instr_ok C (.BINOP nt binop_nt) (.mk_instrtype (.mk_list [(valtype_numtype nt), (valtype_numtype nt)]) [] (.mk_list [(valtype_numtype nt)])) + | testop : forall (C : context) (nt : numtype) (testop_nt : testop_), + (wf_testop_ nt testop_nt) -> + Instr_ok C (.TESTOP nt testop_nt) (.mk_instrtype (.mk_list [(valtype_numtype nt)]) [] (.mk_list [.I32])) + | relop : forall (C : context) (nt : numtype) (relop_nt : relop_), + (wf_relop_ nt relop_nt) -> + Instr_ok C (.RELOP nt relop_nt) (.mk_instrtype (.mk_list [(valtype_numtype nt), (valtype_numtype nt)]) [] (.mk_list [.I32])) + | cvtop : forall (C : context) (nt_1 : numtype) (nt_2 : numtype) (cvtop : cvtop__), + (wf_cvtop__ nt_2 nt_1 cvtop) -> + Instr_ok C (.CVTOP nt_1 nt_2 cvtop) (.mk_instrtype (.mk_list [(valtype_numtype nt_2)]) [] (.mk_list [(valtype_numtype nt_1)])) + | vconst : forall (C : context) (c : vec_), Instr_ok C (.VCONST .V128 c) (.mk_instrtype (.mk_list []) [] (.mk_list [.V128])) + | vvunop : forall (C : context) (v_vvunop : vvunop), Instr_ok C (.VVUNOP .V128 v_vvunop) (.mk_instrtype (.mk_list [.V128]) [] (.mk_list [.V128])) + | vvbinop : forall (C : context) (v_vvbinop : vvbinop), Instr_ok C (.VVBINOP .V128 v_vvbinop) (.mk_instrtype (.mk_list [.V128, .V128]) [] (.mk_list [.V128])) + | vvternop : forall (C : context) (v_vvternop : vvternop), Instr_ok C (.VVTERNOP .V128 v_vvternop) (.mk_instrtype (.mk_list [.V128, .V128, .V128]) [] (.mk_list [.V128])) + | vvtestop : forall (C : context) (v_vvtestop : vvtestop), Instr_ok C (.VVTESTOP .V128 v_vvtestop) (.mk_instrtype (.mk_list [.V128]) [] (.mk_list [.I32])) + | vunop : forall (C : context) (sh : shape) (vunop : vunop_), + (wf_vunop_ sh vunop) -> + Instr_ok C (.VUNOP sh vunop) (.mk_instrtype (.mk_list [.V128]) [] (.mk_list [.V128])) + | vbinop : forall (C : context) (sh : shape) (vbinop : vbinop_), + (wf_vbinop_ sh vbinop) -> + Instr_ok C (.VBINOP sh vbinop) (.mk_instrtype (.mk_list [.V128, .V128]) [] (.mk_list [.V128])) + | vternop : forall (C : context) (sh : shape) (vternop : vternop_), + (wf_vternop_ sh vternop) -> + Instr_ok C (.VTERNOP sh vternop) (.mk_instrtype (.mk_list [.V128, .V128, .V128]) [] (.mk_list [.V128])) + | vtestop : forall (C : context) (sh : shape) (vtestop : vtestop_), + (wf_vtestop_ sh vtestop) -> + Instr_ok C (.VTESTOP sh vtestop) (.mk_instrtype (.mk_list [.V128]) [] (.mk_list [.I32])) + | vrelop : forall (C : context) (sh : shape) (vrelop : vrelop_), + (wf_vrelop_ sh vrelop) -> + Instr_ok C (.VRELOP sh vrelop) (.mk_instrtype (.mk_list [.V128, .V128]) [] (.mk_list [.V128])) + | vshiftop : forall (C : context) (sh : ishape) (vshiftop : vshiftop_), + (wf_vshiftop_ sh vshiftop) -> + Instr_ok C (.VSHIFTOP sh vshiftop) (.mk_instrtype (.mk_list [.V128, .I32]) [] (.mk_list [.V128])) + | vbitmask : forall (C : context) (sh : ishape), Instr_ok C (.VBITMASK sh) (.mk_instrtype (.mk_list [.V128]) [] (.mk_list [.I32])) + | vswizzlop : forall (C : context) (sh : bshape) (vswizzlop : vswizzlop_), + (wf_vswizzlop_ sh vswizzlop) -> + Instr_ok C (.VSWIZZLOP sh vswizzlop) (.mk_instrtype (.mk_list [.V128, .V128]) [] (.mk_list [.V128])) + | vshuffle : forall (C : context) (sh : bshape) (i_lst : (List laneidx)), + Forall (fun (i : laneidx) => ((proj_uN_0 i) < (2 * (proj_dim_0 (fun_dim (proj_bshape_0 sh)))))) i_lst -> + Instr_ok C (.VSHUFFLE sh i_lst) (.mk_instrtype (.mk_list [.V128, .V128]) [] (.mk_list [.V128])) + | vsplat : forall (C : context) (sh : shape), Instr_ok C (.VSPLAT sh) (.mk_instrtype (.mk_list [(valtype_numtype (unpackshape sh))]) [] (.mk_list [.V128])) + | vextract_lane : forall (C : context) (sh : shape) (sx_opt : (Option sx)) (i : laneidx), + ((proj_uN_0 i) < (proj_dim_0 (fun_dim sh))) -> + Instr_ok C (.VEXTRACT_LANE sh sx_opt i) (.mk_instrtype (.mk_list [.V128]) [] (.mk_list [(valtype_numtype (unpackshape sh))])) + | vreplace_lane : forall (C : context) (sh : shape) (i : laneidx), + ((proj_uN_0 i) < (proj_dim_0 (fun_dim sh))) -> + Instr_ok C (.VREPLACE_LANE sh i) (.mk_instrtype (.mk_list [.V128, (valtype_numtype (unpackshape sh))]) [] (.mk_list [.V128])) + | vextunop : forall (C : context) (sh_1 : ishape) (sh_2 : ishape) (vextunop : vextunop__), + (wf_vextunop__ sh_2 sh_1 vextunop) -> + Instr_ok C (.VEXTUNOP sh_1 sh_2 vextunop) (.mk_instrtype (.mk_list [.V128]) [] (.mk_list [.V128])) + | vextbinop : forall (C : context) (sh_1 : ishape) (sh_2 : ishape) (vextbinop : vextbinop__), + (wf_vextbinop__ sh_2 sh_1 vextbinop) -> + Instr_ok C (.VEXTBINOP sh_1 sh_2 vextbinop) (.mk_instrtype (.mk_list [.V128, .V128]) [] (.mk_list [.V128])) + | vextternop : forall (C : context) (sh_1 : ishape) (sh_2 : ishape) (vextternop : vextternop__), + (wf_vextternop__ sh_2 sh_1 vextternop) -> + Instr_ok C (.VEXTTERNOP sh_1 sh_2 vextternop) (.mk_instrtype (.mk_list [.V128, .V128, .V128]) [] (.mk_list [.V128])) + | vnarrow : forall (C : context) (sh_1 : ishape) (sh_2 : ishape) (v_sx : sx), Instr_ok C (.VNARROW sh_1 sh_2 v_sx) (.mk_instrtype (.mk_list [.V128, .V128]) [] (.mk_list [.V128])) + | vcvtop : forall (C : context) (sh_1 : shape) (sh_2 : shape) (vcvtop : vcvtop__), + (wf_vcvtop__ sh_2 sh_1 vcvtop) -> + Instr_ok C (.VCVTOP sh_1 sh_2 vcvtop) (.mk_instrtype (.mk_list [.V128]) [] (.mk_list [.V128])) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 -/ +inductive Instrs_ok : context -> (List instr) -> instrtype -> Prop where + | empty : forall (C : context), Instrs_ok C [] (.mk_instrtype (.mk_list []) [] (.mk_list [])) + | seq : forall (C : context) (instr_1 : instr) (instr_2_lst : (List instr)) (t_1_lst : (List valtype)) (x_1_lst : (List idx)) (x_2_lst : (List idx)) (t_3_lst : (List valtype)) (t_2_lst : (List valtype)) (init_lst : (List init)) (t_lst : (List valtype)) (var_0 : context), + (fun_with_locals C x_1_lst (List.map (fun (t : valtype) => (.mk_localtype .SET t)) t_lst) var_0) -> + (Instr_ok C instr_1 (.mk_instrtype (.mk_list t_1_lst) x_1_lst (.mk_list t_2_lst))) -> + ((List.length init_lst) == (List.length t_lst)) -> + ((List.length init_lst) == (List.length x_1_lst)) -> + Forall (fun (x_1 : idx) => ((proj_uN_0 x_1) < (List.length (C.LOCALS)))) x_1_lst -> + Forall₃ (fun (v_init : init) (t : valtype) (x_1 : idx) => (((C.LOCALS)[(proj_uN_0 x_1)]!) == (.mk_localtype v_init t))) init_lst t_lst x_1_lst -> + (Instrs_ok var_0 instr_2_lst (.mk_instrtype (.mk_list t_2_lst) x_2_lst (.mk_list t_3_lst))) -> + Instrs_ok C ([instr_1] ++ instr_2_lst) (.mk_instrtype (.mk_list t_1_lst) (x_1_lst ++ x_2_lst) (.mk_list t_3_lst)) + | sub : forall (C : context) (instr_lst : (List instr)) (it' : instrtype) (it : instrtype), + (Instrs_ok C instr_lst it) -> + (Instrtype_sub C it it') -> + (Instrtype_ok C it') -> + Instrs_ok C instr_lst it' + | frame : forall (C : context) (instr_lst : (List instr)) (t_lst : (List valtype)) (t_1_lst : (List valtype)) (x_lst : (List idx)) (t_2_lst : (List valtype)), + (Instrs_ok C instr_lst (.mk_instrtype (.mk_list t_1_lst) x_lst (.mk_list t_2_lst))) -> + (Resulttype_ok C (.mk_list t_lst)) -> + Instrs_ok C instr_lst (.mk_instrtype (.mk_list (t_lst ++ t_1_lst)) x_lst (.mk_list (t_lst ++ t_2_lst))) + +end + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:7.1-7.94 -/ +inductive Expr_ok : context -> expr -> resulttype -> Prop where + | mk_Expr_ok : forall (C : context) (instr_lst : (List instr)) (t_lst : (List valtype)), + (Instrs_ok C instr_lst (.mk_instrtype (.mk_list []) [] (.mk_list t_lst))) -> + Expr_ok C instr_lst (.mk_list t_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:12.1-13.75 -/ +inductive Nondefaultable : valtype -> Prop where + | mk_Nondefaultable : forall (t : valtype), + ((default_ t) == none) -> + Nondefaultable t + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:645.1-645.104 -/ +inductive Instr_const : context -> instr -> Prop where + | const : forall (C : context) (nt : numtype) (c_nt : num_), + (wf_num_ nt c_nt) -> + Instr_const C (.CONST nt c_nt) + | vconst : forall (C : context) (vt : vectype) (c_vt : vec_), Instr_const C (.VCONST vt c_vt) + | ref_null : forall (C : context) (ht : heaptype), Instr_const C (.REF_NULL ht) + | ref_i31 : forall (C : context), Instr_const C .REF_I31 + | ref_func : forall (C : context) (x : idx), Instr_const C (.REF_FUNC x) + | struct_new : forall (C : context) (x : idx), Instr_const C (.STRUCT_NEW x) + | struct_new_default : forall (C : context) (x : idx), Instr_const C (.STRUCT_NEW_DEFAULT x) + | array_new : forall (C : context) (x : idx), Instr_const C (.ARRAY_NEW x) + | array_new_default : forall (C : context) (x : idx), Instr_const C (.ARRAY_NEW_DEFAULT x) + | array_new_fixed : forall (C : context) (x : idx) (v_n : n), Instr_const C (.ARRAY_NEW_FIXED x (.mk_uN v_n)) + | any_convert_extern : forall (C : context), Instr_const C .ANY_CONVERT_EXTERN + | extern_convert_any : forall (C : context), Instr_const C .EXTERN_CONVERT_ANY + | global_get : forall (C : context) (x : idx) (t : valtype), + ((proj_uN_0 x) < (List.length (C.GLOBALS))) -> + (((C.GLOBALS)[(proj_uN_0 x)]!) == (.mk_globaltype none t)) -> + Instr_const C (.GLOBAL_GET x) + | binop : forall (C : context) (v_Inn : Inn) (binop : binop_), + (wf_binop_ (numtype_addrtype v_Inn) binop) -> + (wf_binop_ (numtype_addrtype v_Inn) (.mk_binop__0 v_Inn .ADD)) -> + (wf_binop_ (numtype_addrtype v_Inn) (.mk_binop__0 v_Inn .SUB)) -> + (wf_binop_ (numtype_addrtype v_Inn) (.mk_binop__0 v_Inn .MUL)) -> + (List.contains [.I32, .I64] v_Inn) -> + (List.contains [(.mk_binop__0 v_Inn .ADD), (.mk_binop__0 v_Inn .SUB), (.mk_binop__0 v_Inn .MUL)] binop) -> + Instr_const C (.BINOP (numtype_addrtype v_Inn) binop) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:646.1-646.103 -/ +inductive Expr_const : context -> expr -> Prop where + | mk_Expr_const : forall (C : context) (instr_lst : (List instr)), + Forall (fun (v_instr : instr) => (Instr_const C v_instr)) instr_lst -> + Expr_const C instr_lst + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:647.1-647.105 -/ +inductive Expr_ok_const : context -> expr -> valtype -> Prop where + | mk_Expr_ok_const : forall (C : context) (v_expr : expr) (t : valtype), + (Expr_ok C v_expr (.mk_list [t])) -> + (Expr_const C v_expr) -> + Expr_ok_const C v_expr t + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:7.1-7.97 -/ +inductive Type_ok : context -> type -> (List deftype) -> Prop where + | mk_Type_ok : forall (C : context) (v_rectype : rectype) (dt_lst : (List deftype)) (x : idx) (var_0 : (List deftype)), + (fun_rolldt x v_rectype var_0) -> + ((proj_uN_0 x) == (List.length (C.TYPES))) -> + (dt_lst == var_0) -> + (Rectype_ok (C ++ { TYPES := dt_lst, RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] }) v_rectype (.OK x)) -> + Type_ok C (.TYPE v_rectype) dt_lst + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:8.1-8.96 -/ +inductive Tag_ok : context -> tag -> tagtype -> Prop where + | mk_Tag_ok : forall (C : context) (v_tagtype : tagtype) (var_0 : tagtype), + (fun_clos_tagtype C v_tagtype var_0) -> + (Tagtype_ok C v_tagtype) -> + Tag_ok C (.TAG v_tagtype) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:9.1-9.99 -/ +inductive Global_ok : context -> global -> globaltype -> Prop where + | mk_Global_ok : forall (C : context) (v_globaltype : globaltype) (v_expr : expr) (t : valtype), + (Globaltype_ok C v_globaltype) -> + (v_globaltype == (.mk_globaltype (some .MUT) t)) -> + (Expr_ok_const C v_expr t) -> + Global_ok C (.GLOBAL v_globaltype v_expr) v_globaltype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:10.1-10.96 -/ +inductive Mem_ok : context -> mem -> memtype -> Prop where + | mk_Mem_ok : forall (C : context) (v_memtype : memtype), + (Memtype_ok C v_memtype) -> + Mem_ok C (.MEMORY v_memtype) v_memtype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:11.1-11.98 -/ +inductive Table_ok : context -> table -> tabletype -> Prop where + | mk_Table_ok : forall (C : context) (v_tabletype : tabletype) (v_expr : expr) («at» : addrtype) (lim : limits) (rt : reftype), + (Tabletype_ok C v_tabletype) -> + (v_tabletype == (.mk_tabletype «at» lim rt)) -> + (Expr_ok_const C v_expr (valtype_reftype rt)) -> + Table_ok C (.TABLE v_tabletype v_expr) v_tabletype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:18.1-18.98 -/ +inductive Local_ok : context -> «local» -> localtype -> Prop where + | set : forall (C : context) (t : valtype), + (Defaultable t) -> + Local_ok C (.LOCAL t) (.mk_localtype .SET t) + | unset : forall (C : context) (t : valtype), + (Nondefaultable t) -> + Local_ok C (.LOCAL t) (.mk_localtype .UNSET t) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:12.1-12.97 -/ +inductive Func_ok : context -> func -> deftype -> Prop where + | mk_Func_ok : forall (C : context) (x : idx) (local_lst : (List «local»)) (v_expr : expr) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (lct_lst : (List localtype)), + ((proj_uN_0 x) < (List.length (C.TYPES))) -> + (Expand ((C.TYPES)[(proj_uN_0 x)]!) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + ((List.length lct_lst) == (List.length local_lst)) -> + Forall₂ (fun (lct : localtype) (v_local : «local») => (Local_ok C v_local lct)) lct_lst local_lst -> + (Expr_ok (C ++ { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := ((List.map (fun (t_1 : valtype) => (.mk_localtype .SET t_1)) t_1_lst) ++ lct_lst), LABELS := [(.mk_list t_2_lst)], RETURN := (some (.mk_list t_2_lst)), REFS := [] }) v_expr (.mk_list t_2_lst)) -> + Func_ok C (.FUNC x local_lst v_expr) ((C.TYPES)[(proj_uN_0 x)]!) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:15.1-15.118 -/ +inductive Datamode_ok : context -> datamode -> datatype -> Prop where + | passive : forall (C : context), Datamode_ok C .PASSIVE .OK + | active : forall (C : context) (x : idx) (v_expr : expr) («at» : addrtype) (lim : limits), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == (.PAGE «at» lim)) -> + (Expr_ok_const C v_expr (valtype_addrtype «at»)) -> + Datamode_ok C (.ACTIVE x v_expr) .OK + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:13.1-13.115 -/ +inductive Data_ok : context -> data -> datatype -> Prop where + | mk_Data_ok : forall (C : context) (b_lst : (List byte)) (v_datamode : datamode), + (Datamode_ok C v_datamode .OK) -> + Data_ok C (.DATA b_lst v_datamode) .OK + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:16.1-16.101 -/ +inductive Elemmode_ok : context -> elemmode -> elemtype -> Prop where + | passive : forall (C : context) (rt : reftype), Elemmode_ok C .PASSIVE rt + | declare : forall (C : context) (rt : reftype), Elemmode_ok C .DECLARE rt + | active : forall (C : context) (x : idx) (v_expr : expr) (rt : reftype) («at» : addrtype) (lim : limits) (rt' : reftype), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == (.mk_tabletype «at» lim rt')) -> + (Reftype_sub C rt rt') -> + (Expr_ok_const C v_expr (valtype_addrtype «at»)) -> + Elemmode_ok C (.ACTIVE x v_expr) rt + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:14.1-14.97 -/ +inductive Elem_ok : context -> elem -> elemtype -> Prop where + | mk_Elem_ok : forall (C : context) (v_elemtype : elemtype) (expr_lst : (List expr)) (v_elemmode : elemmode), + (Reftype_ok C v_elemtype) -> + Forall (fun (v_expr : expr) => (Expr_ok_const C v_expr (valtype_reftype v_elemtype))) expr_lst -> + (Elemmode_ok C v_elemmode v_elemtype) -> + Elem_ok C (.ELEM v_elemtype expr_lst v_elemmode) v_elemtype + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:17.1-17.98 -/ +inductive Start_ok : context -> start -> Prop where + | mk_Start_ok : forall (C : context) (x : idx), + ((proj_uN_0 x) < (List.length (C.FUNCS))) -> + (Expand ((C.FUNCS)[(proj_uN_0 x)]!) (.FUNC (.mk_list []) (.mk_list []))) -> + Start_ok C (.START x) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:98.1-98.105 -/ +inductive Import_ok : context -> «import» -> externtype -> Prop where + | mk_Import_ok : forall (C : context) (name_1 : name) (name_2 : name) (xt : externtype) (var_0 : externtype), + (fun_clos_externtype C xt var_0) -> + (Externtype_ok C xt) -> + Import_ok C (.IMPORT name_1 name_2 xt) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:100.1-100.108 -/ +inductive Externidx_ok : context -> externidx -> externtype -> Prop where + | tag : forall (C : context) (x : idx) (jt : tagtype), + ((proj_uN_0 x) < (List.length (C.TAGS))) -> + (((C.TAGS)[(proj_uN_0 x)]!) == jt) -> + Externidx_ok C (.TAG x) (.TAG jt) + | global : forall (C : context) (x : idx) (gt : globaltype), + ((proj_uN_0 x) < (List.length (C.GLOBALS))) -> + (((C.GLOBALS)[(proj_uN_0 x)]!) == gt) -> + Externidx_ok C (.GLOBAL x) (.GLOBAL gt) + | mem : forall (C : context) (x : idx) (mt : memtype), + ((proj_uN_0 x) < (List.length (C.MEMS))) -> + (((C.MEMS)[(proj_uN_0 x)]!) == mt) -> + Externidx_ok C (.MEM x) (.MEM mt) + | table : forall (C : context) (x : idx) (tt : tabletype), + ((proj_uN_0 x) < (List.length (C.TABLES))) -> + (((C.TABLES)[(proj_uN_0 x)]!) == tt) -> + Externidx_ok C (.TABLE x) (.TABLE tt) + | func : forall (C : context) (x : idx) (dt : deftype), + ((proj_uN_0 x) < (List.length (C.FUNCS))) -> + (((C.FUNCS)[(proj_uN_0 x)]!) == dt) -> + Externidx_ok C (.FUNC x) (.FUNC (typeuse_deftype dt)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:99.1-99.105 -/ +inductive Export_ok : context -> «export» -> name -> externtype -> Prop where + | mk_Export_ok : forall (C : context) (v_name : name) (v_externidx : externidx) (xt : externtype), + (Externidx_ok C v_externidx xt) -> + Export_ok C (.EXPORT v_name v_externidx) v_name xt + +/- Recursive Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 -/ +inductive Globals_ok : context -> (List global) -> (List globaltype) -> Prop where + | empty : forall (C : context), Globals_ok C [] [] + | cons : forall (C : context) (global_1 : global) (global_lst : (List global)) (gt_1 : globaltype) (gt_lst : (List globaltype)), + (Global_ok C global_1 gt_1) -> + (Globals_ok (C ++ { TYPES := [], RECS := [], TAGS := [], GLOBALS := [gt_1], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] }) global_lst gt_lst) -> + Globals_ok C ([global_1] ++ global_lst) ([gt_1] ++ gt_lst) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 -/ +inductive Types_ok : context -> (List type) -> (List deftype) -> Prop where + | empty : forall (C : context), Types_ok C [] [] + | cons : forall (C : context) (type_1 : type) (type_lst : (List type)) (dt_1_lst : (List deftype)) (dt_lst : (List deftype)), + (Type_ok C type_1 dt_1_lst) -> + (Types_ok (C ++ { TYPES := dt_1_lst, RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] }) type_lst dt_lst) -> + Types_ok C ([type_1] ++ type_lst) (dt_1_lst ++ dt_lst) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:139.1-139.44 -/ +inductive nonfuncs : Type where + | mk_nonfuncs (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (elem_lst : (List elem)) : nonfuncs +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:139.8-139.16 -/ +inductive wf_nonfuncs : nonfuncs -> Prop where + | nonfuncs_case_0 : forall (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (elem_lst : (List elem)), + Forall (fun (v_global : global) => (wf_global v_global)) global_lst -> + Forall (fun (v_mem : mem) => (wf_mem v_mem)) mem_lst -> + Forall (fun (v_table : table) => (wf_table v_table)) table_lst -> + Forall (fun (v_elem : elem) => (wf_elem v_elem)) elem_lst -> + wf_nonfuncs (.mk_nonfuncs global_lst mem_lst table_lst elem_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:140.6-140.23 -/ +inductive fun_funcidx_nonfuncs : nonfuncs -> (List funcidx) -> Prop where + | fun_funcidx_nonfuncs_case_0 : forall (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (elem_lst : (List elem)) (var_0 : (List funcidx)), + (fun_funcidx_module (.MODULE [] [] [] global_lst mem_lst table_lst [] [] elem_lst none []) var_0) -> + fun_funcidx_nonfuncs (.mk_nonfuncs global_lst mem_lst table_lst elem_lst) var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:134.1-134.99 -/ +inductive Module_ok : module -> moduletype -> Prop where + | mk_Module_ok : forall (type_lst : (List type)) (import_lst : (List «import»)) (tag_lst : (List tag)) (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (func_lst : (List func)) (data_lst : (List data)) (elem_lst : (List elem)) (start_opt : (Option start)) (export_lst : (List «export»)) (C : context) (xt_I_lst : (List externtype)) (xt_E_lst : (List externtype)) (dt'_lst : (List deftype)) (C' : context) (jt_lst : (List tagtype)) (gt_lst : (List globaltype)) (mt_lst : (List memtype)) (tt_lst : (List tabletype)) (dt_lst : (List deftype)) (ok_lst : (List datatype)) (rt_lst : (List reftype)) (nm_lst : (List name)) (jt_I_lst : (List tagtype)) (mt_I_lst : (List memtype)) (tt_I_lst : (List tabletype)) (gt_I_lst : (List globaltype)) (dt_I_lst : (List deftype)) (x_lst : (List idx)) (var_6 : (List deftype)) (var_5 : (List tabletype)) (var_4 : (List memtype)) (var_3 : (List globaltype)) (var_2 : (List tagtype)) (var_1 : (List funcidx)) (var_0 : moduletype), + (fun_funcsxt xt_I_lst var_6) -> + (fun_tablesxt xt_I_lst var_5) -> + (fun_memsxt xt_I_lst var_4) -> + (fun_globalsxt xt_I_lst var_3) -> + (fun_tagsxt xt_I_lst var_2) -> + (fun_funcidx_nonfuncs (.mk_nonfuncs global_lst mem_lst table_lst elem_lst) var_1) -> + (fun_clos_moduletype C (.mk_moduletype xt_I_lst xt_E_lst) var_0) -> + (Types_ok { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } type_lst dt'_lst) -> + ((List.length import_lst) == (List.length xt_I_lst)) -> + Forall₂ (fun (v_import : «import») (xt_I : externtype) => (Import_ok { TYPES := dt'_lst, RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } v_import xt_I)) import_lst xt_I_lst -> + ((List.length jt_lst) == (List.length tag_lst)) -> + Forall₂ (fun (jt : tagtype) (v_tag : tag) => (Tag_ok C' v_tag jt)) jt_lst tag_lst -> + (Globals_ok C' global_lst gt_lst) -> + ((List.length mem_lst) == (List.length mt_lst)) -> + Forall₂ (fun (v_mem : mem) (mt : memtype) => (Mem_ok C' v_mem mt)) mem_lst mt_lst -> + ((List.length table_lst) == (List.length tt_lst)) -> + Forall₂ (fun (v_table : table) (tt : tabletype) => (Table_ok C' v_table tt)) table_lst tt_lst -> + ((List.length dt_lst) == (List.length func_lst)) -> + Forall₂ (fun (dt : deftype) (v_func : func) => (Func_ok C v_func dt)) dt_lst func_lst -> + ((List.length data_lst) == (List.length ok_lst)) -> + Forall₂ (fun (v_data : data) (ok : datatype) => (Data_ok C v_data ok)) data_lst ok_lst -> + ((List.length elem_lst) == (List.length rt_lst)) -> + Forall₂ (fun (v_elem : elem) (rt : elemtype) => (Elem_ok C v_elem rt)) elem_lst rt_lst -> + Forall (fun (v_start : start) => (Start_ok C v_start)) (Option.toList start_opt) -> + ((List.length export_lst) == (List.length nm_lst)) -> + ((List.length export_lst) == (List.length xt_E_lst)) -> + Forall₃ (fun (v_export : «export») (nm : name) (xt_E : externtype) => (Export_ok C v_export nm xt_E)) export_lst nm_lst xt_E_lst -> + (disjoint_ name nm_lst) -> + (C == (C' ++ { TYPES := [], RECS := [], TAGS := (jt_I_lst ++ jt_lst), GLOBALS := gt_lst, MEMS := (mt_I_lst ++ mt_lst), TABLES := (tt_I_lst ++ tt_lst), FUNCS := [], DATAS := ok_lst, ELEMS := rt_lst, LOCALS := [], LABELS := [], RETURN := none, REFS := [] })) -> + (C' == { TYPES := dt'_lst, RECS := [], TAGS := [], GLOBALS := gt_I_lst, MEMS := [], TABLES := [], FUNCS := (dt_I_lst ++ dt_lst), DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := x_lst }) -> + (x_lst == var_1) -> + (jt_I_lst == var_2) -> + (gt_I_lst == var_3) -> + (mt_I_lst == var_4) -> + (tt_I_lst == var_5) -> + (dt_I_lst == var_6) -> + Module_ok (.MODULE type_lst import_lst tag_lst global_lst mem_lst table_lst func_lst data_lst elem_lst start_opt export_lst) var_0 + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:5.1-5.24 -/ +inductive relaxed2 : Type where + | mk_relaxed2 (i : Nat) : relaxed2 +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:5.1-5.24 -/ +def proj_relaxed2_0 : ∀ (x : relaxed2) , Nat + | (.mk_relaxed2 v_num_0) => + (v_num_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:5.8-5.16 -/ +inductive wf_relaxed2 : relaxed2 -> Prop where + | relaxed2_case_0 : forall (i : Nat), + ((i == 0) || (i == 1)) -> + wf_relaxed2 (.mk_relaxed2 i) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:6.1-6.32 -/ +inductive relaxed4 : Type where + | mk_relaxed4 (i : Nat) : relaxed4 +deriving Inhabited, BEq + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:6.1-6.32 -/ +def proj_relaxed4_0 : ∀ (x : relaxed4) , Nat + | (.mk_relaxed4 v_num_0) => + (v_num_0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:6.8-6.16 -/ +inductive wf_relaxed4 : relaxed4 -> Prop where + | relaxed4_case_0 : forall (i : Nat), + ((((i == 0) || (i == 1)) || (i == 2)) || (i == 3)) -> + wf_relaxed4 (.mk_relaxed4 i) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:8.1-8.83 -/ +def fun_relaxed2 : ∀ (v_relaxed2 : relaxed2) (v_X : Type) (v_X_0 : v_X) (v_X_1 : v_X) , v_X + | i, v_X, X_1, X_2 => + (if (ND ) then ([X_1, X_2][(proj_relaxed2_0 i)]!) else ([X_1, X_2][0]!)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:9.1-9.89 -/ +def fun_relaxed4 : ∀ (v_relaxed4 : relaxed4) (v_X : Type) (v_X_0 : v_X) (v_X_1 : v_X) (v_X_2 : v_X) (v_X_3 : v_X) , v_X + | i, v_X, X_1, X_2, X_3, X_4 => + (if (ND ) then ([X_1, X_2, X_3, X_4][(proj_relaxed4_0 i)]!) else ([X_1, X_2, X_3, X_4][0]!)) + + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:18.1-18.43 -/ +opaque R_fmadd : relaxed2 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:19.1-19.43 -/ +opaque R_fmin : relaxed4 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:20.1-20.43 -/ +opaque R_fmax : relaxed4 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:21.1-21.43 -/ +opaque R_idot : relaxed2 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:22.1-22.43 -/ +opaque R_iq15mulr : relaxed2 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:23.1-23.43 -/ +opaque R_trunc_u : relaxed4 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:24.1-24.43 -/ +opaque R_trunc_s : relaxed2 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:25.1-25.43 -/ +opaque R_swizzle : relaxed2 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec:26.1-26.43 -/ +opaque R_laneselect : relaxed2 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:7.1-7.41 -/ +opaque s33_to_u32 : forall (v_s33 : s33), u32 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:12.1-12.107 -/ +opaque ibits_ : forall (v_N : N) (v_iN : iN), (List bit) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:13.1-13.107 -/ +opaque fbits_ : forall (v_N : N) (v_fN : fN), (List bit) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:14.1-14.109 -/ +opaque ibytes_ : forall (v_N : N) (v_iN : iN), (List byte) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:15.1-15.109 -/ +opaque fbytes_ : forall (v_N : N) (v_fN : fN), (List byte) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:16.1-16.104 -/ +opaque nbytes_ : forall (v_numtype : numtype) (v_num_ : num_), (List byte) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:17.1-17.104 -/ +opaque vbytes_ : forall (v_vectype : vectype) (v_vec_ : vec_), (List byte) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:18.1-18.104 -/ +opaque zbytes_ : forall (v_storagetype : storagetype) (v_lit_ : lit_), (List byte) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:19.1-19.104 -/ +opaque cbytes_ : forall (v_Cnn : Cnn) (v_lit_ : lit_), (List byte) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:21.1-21.91 -/ +opaque inv_ibits_ : forall (v_N : N) (var_0 : (List bit)), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:22.1-22.91 -/ +opaque inv_fbits_ : forall (v_N : N) (var_0 : (List bit)), fN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:23.1-23.92 -/ +opaque inv_ibytes_ : forall (v_N : N) (var_0 : (List byte)), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:24.1-24.92 -/ +opaque inv_fbytes_ : forall (v_N : N) (var_0 : (List byte)), fN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:25.1-25.87 -/ +opaque inv_nbytes_ : forall (v_numtype : numtype) (var_0 : (List byte)), num_ := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:26.1-26.87 -/ +opaque inv_vbytes_ : forall (v_vectype : vectype) (var_0 : (List byte)), vec_ := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:27.1-27.92 -/ +opaque inv_zbytes_ : forall (v_storagetype : storagetype) (var_0 : (List byte)), lit_ := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:28.1-28.87 -/ +opaque inv_cbytes_ : forall (v_Cnn : Cnn) (var_0 : (List byte)), lit_ := opaqueDef + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:52.6-52.14 -/ +inductive fun_signed_ : N -> Nat -> Nat -> Prop where + | fun_signed__case_0 : forall (v_N : Nat) (i : Nat), + (i < (2 ^ (((v_N : Nat) - (1 : Nat)) : Nat))) -> + fun_signed_ v_N i (i : Nat) + | fun_signed__case_1 : forall (v_N : Nat) (i : Nat), + (((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) <= i) && (i < (2 ^ v_N))) -> + fun_signed_ v_N i ((i : Nat) - ((2 ^ v_N) : Nat)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:56.6-56.18 -/ +inductive fun_inv_signed_ : N -> Nat -> Nat -> Prop where + | fun_inv_signed__case_0 : forall (v_N : Nat) (i : Nat), + (((0 : Nat) <= i) && (i < ((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat))) -> + fun_inv_signed_ v_N i (i : Nat) + | fun_inv_signed__case_1 : forall (v_N : Nat) (i : Nat), + (((0 - ((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat)) <= i) && (i < (0 : Nat))) -> + fun_inv_signed_ v_N i ((i + ((2 ^ v_N) : Nat)) : Nat) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:61.1-61.46 -/ +def fun_sx : ∀ (v_storagetype : storagetype) , (Option sx) + | .I32 => + none + | .I64 => + none + | .F32 => + none + | .F64 => + none + | .V128 => + none + | .I8 => + (some .S) + | .I16 => + (some .S) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:68.6-68.11 -/ +inductive fun_zero : lanetype -> lane_ -> Prop where + | fun_zero_case_0 : + (wf_lane_ (lanetype_Jnn .I32) (.mk_lane__2 .I32 (.mk_uN 0))) -> + fun_zero .I32 (.mk_lane__2 .I32 (.mk_uN 0)) + | fun_zero_case_1 : + (wf_lane_ (lanetype_Jnn .I64) (.mk_lane__2 .I64 (.mk_uN 0))) -> + fun_zero .I64 (.mk_lane__2 .I64 (.mk_uN 0)) + | fun_zero_case_2 : + (wf_lane_ (lanetype_Jnn .I8) (.mk_lane__2 .I8 (.mk_uN 0))) -> + fun_zero .I8 (.mk_lane__2 .I8 (.mk_uN 0)) + | fun_zero_case_3 : + (wf_lane_ (lanetype_Jnn .I16) (.mk_lane__2 .I16 (.mk_uN 0))) -> + fun_zero .I16 (.mk_lane__2 .I16 (.mk_uN 0)) + | fun_zero_case_4 : + (wf_lane_ (lanetype_Fnn .F32) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 (fzero (size (numtype_Fnn .F32)))))) -> + fun_zero .F32 (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 (fzero (size (numtype_Fnn .F32))))) + | fun_zero_case_5 : + (wf_lane_ (lanetype_Fnn .F64) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 (fzero (size (numtype_Fnn .F64)))))) -> + fun_zero .F64 (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 (fzero (size (numtype_Fnn .F64))))) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:72.1-72.22 -/ +def nat_of_bool : ∀ (v_bool : Bool) , Nat + | false => + 0 + | true => + 1 + + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:76.1-76.23 -/ +opaque truncz : forall (rat : Nat), Nat := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:80.1-80.59 -/ +opaque ceilz : forall (rat : Nat), Nat := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:87.1-87.61 -/ +def sat_u_ : ∀ (v_N : N) (int : Nat) , Nat + | v_N, i => + (if (i < (0 : Nat)) then 0 else (if (i > (((2 ^ v_N) : Nat) - (1 : Nat))) then ((((2 ^ v_N) : Nat) - (1 : Nat)) : Nat) else (i : Nat))) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:92.1-92.61 -/ +def sat_s_ : ∀ (v_N : N) (int : Nat) , Nat + | v_N, i => + (if (i < (0 - ((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat))) then (0 - ((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat)) else (if (i > (((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat) - (1 : Nat))) then (((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat) - (1 : Nat)) else i)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:100.1-100.29 -/ +def ineg_ : ∀ (v_N : N) (v_iN : iN) , iN + | v_N, i_1 => + (.mk_uN (((((2 ^ v_N) : Nat) - ((proj_uN_0 i_1) : Nat)) mod ((2 ^ v_N) : Nat)) : Nat)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:101.1-101.29 -/ +opaque iabs_ : forall (v_N : N) (v_iN : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:102.1-102.29 -/ +opaque iclz_ : forall (v_N : N) (v_iN : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:103.1-103.29 -/ +opaque ictz_ : forall (v_N : N) (v_iN : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:104.1-104.32 -/ +opaque ipopcnt_ : forall (v_N : N) (v_iN : iN), iN := opaqueDef + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:105.6-105.15 -/ +inductive fun_iextend_ : N -> M -> sx -> iN -> iN -> Prop where + | fun_iextend__case_0 : forall (v_N : Nat) (v_M : Nat) (i : uN), fun_iextend_ v_N v_M .U i (.mk_uN ((proj_uN_0 i) mod (2 ^ v_M))) + | fun_iextend__case_1 : forall (v_N : Nat) (v_M : Nat) (i : uN) (var_1 : Nat) (var_0 : Nat), + (fun_signed_ v_M ((proj_uN_0 i) mod (2 ^ v_M)) var_1) -> + (fun_inv_signed_ v_N var_1 var_0) -> + fun_iextend_ v_N v_M .S i (.mk_uN var_0) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:107.1-107.36 -/ +def iadd_ : ∀ (v_N : N) (v_iN : iN) (v_iN_0 : iN) , iN + | v_N, i_1, i_2 => + (.mk_uN (((proj_uN_0 i_1) + (proj_uN_0 i_2)) mod (2 ^ v_N))) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:108.1-108.36 -/ +def isub_ : ∀ (v_N : N) (v_iN : iN) (v_iN_0 : iN) , iN + | v_N, i_1, i_2 => + (.mk_uN ((((((2 ^ v_N) + (proj_uN_0 i_1)) : Nat) - ((proj_uN_0 i_2) : Nat)) mod ((2 ^ v_N) : Nat)) : Nat)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:109.1-109.36 -/ +def imul_ : ∀ (v_N : N) (v_iN : iN) (v_iN_0 : iN) , iN + | v_N, i_1, i_2 => + (.mk_uN (((proj_uN_0 i_1) * (proj_uN_0 i_2)) mod (2 ^ v_N))) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:110.6-110.12 -/ +inductive fun_idiv_ : N -> sx -> iN -> iN -> (Option iN) -> Prop where + | fun_idiv__case_0 : forall (v_N : Nat) (i_1 : uN), fun_idiv_ v_N .U i_1 (.mk_uN 0) none + | fun_idiv__case_1 : forall (v_N : Nat) (i_1 : uN) (i_2 : uN), fun_idiv_ v_N .U i_1 i_2 (some (.mk_uN ((truncz (((proj_uN_0 i_1) : Nat) / ((proj_uN_0 i_2) : Nat))) : Nat))) + | fun_idiv__case_2 : forall (v_N : Nat) (i_1 : uN), fun_idiv_ v_N .S i_1 (.mk_uN 0) none + | fun_idiv__case_3 : forall (v_N : Nat) (i_1 : uN) (i_2 : uN) (var_1 : Nat) (var_0 : Nat), + (fun_signed_ v_N (proj_uN_0 i_2) var_1) -> + (fun_signed_ v_N (proj_uN_0 i_1) var_0) -> + (((var_0 : Nat) / (var_1 : Nat)) == ((2 ^ (((v_N : Nat) - (1 : Nat)) : Nat)) : Nat)) -> + fun_idiv_ v_N .S i_1 i_2 none + | fun_idiv__case_4 : forall (v_N : Nat) (i_1 : uN) (i_2 : uN) (var_2 : Nat) (var_1 : Nat) (var_0 : Nat), + (fun_signed_ v_N (proj_uN_0 i_2) var_2) -> + (fun_signed_ v_N (proj_uN_0 i_1) var_1) -> + (fun_inv_signed_ v_N (truncz ((var_1 : Nat) / (var_2 : Nat))) var_0) -> + fun_idiv_ v_N .S i_1 i_2 (some (.mk_uN var_0)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:111.6-111.12 -/ +inductive fun_irem_ : N -> sx -> iN -> iN -> (Option iN) -> Prop where + | fun_irem__case_0 : forall (v_N : Nat) (i_1 : uN), fun_irem_ v_N .U i_1 (.mk_uN 0) none + | fun_irem__case_1 : forall (v_N : Nat) (i_1 : uN) (i_2 : uN), fun_irem_ v_N .U i_1 i_2 (some (.mk_uN ((((proj_uN_0 i_1) : Nat) - (((proj_uN_0 i_2) * ((truncz (((proj_uN_0 i_1) : Nat) / ((proj_uN_0 i_2) : Nat))) : Nat)) : Nat)) : Nat))) + | fun_irem__case_2 : forall (v_N : Nat) (i_1 : uN), fun_irem_ v_N .S i_1 (.mk_uN 0) none + | fun_irem__case_3 : forall (v_N : Nat) (i_1 : uN) (i_2 : uN) (j_1 : Nat) (j_2 : Nat) (var_2 : Nat) (var_1 : Nat) (var_0 : Nat), + (fun_signed_ v_N (proj_uN_0 i_2) var_2) -> + (fun_signed_ v_N (proj_uN_0 i_1) var_1) -> + (fun_inv_signed_ v_N (j_1 - (j_2 * (truncz ((j_1 : Nat) / (j_2 : Nat))))) var_0) -> + ((j_1 == var_1) && (j_2 == var_2)) -> + fun_irem_ v_N .S i_1 i_2 (some (.mk_uN var_0)) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:112.1-112.83 -/ +opaque imin_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:113.1-113.83 -/ +opaque imax_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:114.1-114.88 -/ +opaque iadd_sat_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:115.1-115.88 -/ +opaque isub_sat_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:116.1-116.92 -/ +opaque iq15mulr_sat_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:117.1-117.101 -/ +opaque irelaxed_q15mulr_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), (List iN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:118.1-118.84 -/ +opaque iavgr_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:120.1-120.29 -/ +opaque inot_ : forall (v_N : N) (v_iN : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:121.1-121.29 -/ +opaque irev_ : forall (v_N : N) (v_iN : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:122.1-122.36 -/ +opaque iand_ : forall (v_N : N) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:123.1-123.39 -/ +opaque iandnot_ : forall (v_N : N) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:124.1-124.35 -/ +opaque ior_ : forall (v_N : N) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:125.1-125.36 -/ +opaque ixor_ : forall (v_N : N) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:126.1-126.34 -/ +opaque ishl_ : forall (v_N : N) (v_iN : iN) (v_u32 : u32), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:127.1-127.76 -/ +opaque ishr_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_u32 : u32), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:128.1-128.37 -/ +opaque irotl_ : forall (v_N : N) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:129.1-129.37 -/ +opaque irotr_ : forall (v_N : N) (v_iN : iN) (v_iN_0 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:131.1-131.49 -/ +opaque ibitselect_ : forall (v_N : N) (v_iN : iN) (v_iN_0 : iN) (v_iN_1 : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:132.1-132.59 -/ +opaque irelaxed_laneselect_ : forall (v_N : N) (v_iN : iN) (v_iN_0 : iN) (v_iN_1 : iN), (List iN) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:134.1-134.27 -/ +def ieqz_ : ∀ (v_N : N) (v_iN : iN) , u32 + | v_N, i_1 => + (.mk_uN (nat_of_bool ((proj_uN_0 i_1) == 0))) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:135.1-135.27 -/ +def inez_ : ∀ (v_N : N) (v_iN : iN) , u32 + | v_N, i_1 => + (.mk_uN (nat_of_bool ((proj_uN_0 i_1) != 0))) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:137.1-137.33 -/ +def ieq_ : ∀ (v_N : N) (v_iN : iN) (v_iN_0 : iN) , u32 + | v_N, i_1, i_2 => + (.mk_uN (nat_of_bool (i_1 == i_2))) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:138.1-138.33 -/ +def ine_ : ∀ (v_N : N) (v_iN : iN) (v_iN_0 : iN) , u32 + | v_N, i_1, i_2 => + (.mk_uN (nat_of_bool (i_1 != i_2))) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:139.1-139.75 -/ +opaque ilt_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), u32 := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:140.1-140.75 -/ +opaque igt_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), u32 := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:141.1-141.75 -/ +opaque ile_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), u32 := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:142.1-142.75 -/ +opaque ige_ : forall (v_N : N) (v_sx : sx) (v_iN : iN) (v_iN_0 : iN), u32 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:242.1-242.30 -/ +opaque fabs_ : forall (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:243.1-243.30 -/ +opaque fneg_ : forall (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:244.1-244.31 -/ +opaque fsqrt_ : forall (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:245.1-245.31 -/ +opaque fceil_ : forall (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:246.1-246.32 -/ +opaque ffloor_ : forall (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:247.1-247.32 -/ +opaque ftrunc_ : forall (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:248.1-248.34 -/ +opaque fnearest_ : forall (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:250.1-250.37 -/ +opaque fadd_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:251.1-251.37 -/ +opaque fsub_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:252.1-252.37 -/ +opaque fmul_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:253.1-253.37 -/ +opaque fdiv_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:254.1-254.37 -/ +opaque fmin_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:255.1-255.37 -/ +opaque fmax_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:256.1-256.38 -/ +opaque fpmin_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:257.1-257.38 -/ +opaque fpmax_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:258.1-258.82 -/ +opaque frelaxed_min_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:259.1-259.82 -/ +opaque frelaxed_max_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:260.1-260.42 -/ +opaque fcopysign_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:262.1-262.33 -/ +opaque feq_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), u32 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:263.1-263.33 -/ +opaque fne_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), u32 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:264.1-264.33 -/ +opaque flt_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), u32 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:265.1-265.33 -/ +opaque fgt_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), u32 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:266.1-266.33 -/ +opaque fle_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), u32 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:267.1-267.33 -/ +opaque fge_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN), u32 := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:269.1-269.91 -/ +opaque frelaxed_madd_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN) (v_fN_1 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:270.1-270.92 -/ +opaque frelaxed_nmadd_ : forall (v_N : N) (v_fN : fN) (v_fN_0 : fN) (v_fN_1 : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:308.1-308.33 -/ +opaque wrap__ : forall (v_M : M) (v_N : N) (v_iN : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:309.1-309.90 -/ +opaque extend__ : forall (v_M : M) (v_N : N) (v_sx : sx) (v_iN : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:310.1-310.89 -/ +opaque trunc__ : forall (v_M : M) (v_N : N) (v_sx : sx) (v_fN : fN), (Option iN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:311.1-311.94 -/ +opaque trunc_sat__ : forall (v_M : M) (v_N : N) (v_sx : sx) (v_fN : fN), (Option iN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:312.1-312.98 -/ +opaque relaxed_trunc__ : forall (v_M : M) (v_N : N) (v_sx : sx) (v_fN : fN), (Option iN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:313.1-313.36 -/ +opaque demote__ : forall (v_M : M) (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:314.1-314.37 -/ +opaque promote__ : forall (v_M : M) (v_N : N) (v_fN : fN), (List fN) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:315.1-315.91 -/ +opaque convert__ : forall (v_M : M) (v_N : N) (v_sx : sx) (v_iN : iN), fN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:316.1-316.88 -/ +opaque narrow__ : forall (v_M : M) (v_N : N) (v_sx : sx) (v_iN : iN), iN := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:318.1-318.76 -/ +opaque reinterpret__ : forall (numtype_1 : numtype) (numtype_2 : numtype) (v_num_ : num_), num_ := opaqueDef + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:338.6-338.16 -/ +inductive fun_lpacknum_ : lanetype -> num_ -> lane_ -> Prop where + | fun_lpacknum__case_0 : forall (c : num_), + (wf_lane_ (lanetype_numtype .I32) (.mk_lane__0 .I32 c)) -> + fun_lpacknum_ .I32 c (.mk_lane__0 .I32 c) + | fun_lpacknum__case_1 : forall (c : num_), + (wf_lane_ (lanetype_numtype .I64) (.mk_lane__0 .I64 c)) -> + fun_lpacknum_ .I64 c (.mk_lane__0 .I64 c) + | fun_lpacknum__case_2 : forall (c : num_), + (wf_lane_ (lanetype_numtype .F32) (.mk_lane__0 .F32 c)) -> + fun_lpacknum_ .F32 c (.mk_lane__0 .F32 c) + | fun_lpacknum__case_3 : forall (c : num_), + (wf_lane_ (lanetype_numtype .F64) (.mk_lane__0 .F64 c)) -> + fun_lpacknum_ .F64 c (.mk_lane__0 .F64 c) + | fun_lpacknum__case_4 : forall (c : uN), + (wf_lane_ (lanetype_packtype .I8) (.mk_lane__1 .I8 (wrap__ (size (lunpack (lanetype_packtype .I8))) (psize .I8) c))) -> + fun_lpacknum_ .I8 (.mk_num__0 .I32 c) (.mk_lane__1 .I8 (wrap__ (size (lunpack (lanetype_packtype .I8))) (psize .I8) c)) + | fun_lpacknum__case_5 : forall (c : uN), + (wf_lane_ (lanetype_packtype .I16) (.mk_lane__1 .I16 (wrap__ (size (lunpack (lanetype_packtype .I16))) (psize .I16) c))) -> + fun_lpacknum_ .I16 (.mk_num__0 .I32 c) (.mk_lane__1 .I16 (wrap__ (size (lunpack (lanetype_packtype .I16))) (psize .I16) c)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:340.6-340.16 -/ +inductive fun_cpacknum_ : storagetype -> lit_ -> lit_ -> Prop where + | fun_cpacknum__case_0 : forall (c : lit_), fun_cpacknum_ .I32 c c + | fun_cpacknum__case_1 : forall (c : lit_), fun_cpacknum_ .I64 c c + | fun_cpacknum__case_2 : forall (c : lit_), fun_cpacknum_ .F32 c c + | fun_cpacknum__case_3 : forall (c : lit_), fun_cpacknum_ .F64 c c + | fun_cpacknum__case_4 : forall (c : lit_), fun_cpacknum_ .V128 c c + | fun_cpacknum__case_5 : forall (c : uN), + (wf_lit_ (storagetype_packtype .I8) (.mk_lit__2 .I8 (wrap__ (size (lunpack (lanetype_packtype .I8))) (psize .I8) c))) -> + fun_cpacknum_ .I8 (.mk_lit__0 .I32 (.mk_num__0 .I32 c)) (.mk_lit__2 .I8 (wrap__ (size (lunpack (lanetype_packtype .I8))) (psize .I8) c)) + | fun_cpacknum__case_6 : forall (c : uN), + (wf_lit_ (storagetype_packtype .I16) (.mk_lit__2 .I16 (wrap__ (size (lunpack (lanetype_packtype .I16))) (psize .I16) c))) -> + fun_cpacknum_ .I16 (.mk_lit__0 .I32 (.mk_num__0 .I32 c)) (.mk_lit__2 .I16 (wrap__ (size (lunpack (lanetype_packtype .I16))) (psize .I16) c)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:350.6-350.18 -/ +inductive fun_lunpacknum_ : lanetype -> lane_ -> num_ -> Prop where + | fun_lunpacknum__case_0 : forall (c : num_), fun_lunpacknum_ .I32 (.mk_lane__0 .I32 c) c + | fun_lunpacknum__case_1 : forall (c : num_), fun_lunpacknum_ .I64 (.mk_lane__0 .I64 c) c + | fun_lunpacknum__case_2 : forall (c : num_), fun_lunpacknum_ .F32 (.mk_lane__0 .F32 c) c + | fun_lunpacknum__case_3 : forall (c : num_), fun_lunpacknum_ .F64 (.mk_lane__0 .F64 c) c + | fun_lunpacknum__case_4 : forall (c : uN), + (wf_num_ (lunpack (lanetype_packtype .I8)) (.mk_num__0 .I32 (extend__ (psize .I8) (size (lunpack (lanetype_packtype .I8))) .U c))) -> + fun_lunpacknum_ .I8 (.mk_lane__1 .I8 c) (.mk_num__0 .I32 (extend__ (psize .I8) (size (lunpack (lanetype_packtype .I8))) .U c)) + | fun_lunpacknum__case_5 : forall (c : uN), + (wf_num_ (lunpack (lanetype_packtype .I16)) (.mk_num__0 .I32 (extend__ (psize .I16) (size (lunpack (lanetype_packtype .I16))) .U c))) -> + fun_lunpacknum_ .I16 (.mk_lane__1 .I16 c) (.mk_num__0 .I32 (extend__ (psize .I16) (size (lunpack (lanetype_packtype .I16))) .U c)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:352.6-352.18 -/ +inductive fun_cunpacknum_ : storagetype -> lit_ -> lit_ -> Prop where + | fun_cunpacknum__case_0 : forall (c : lit_), fun_cunpacknum_ .I32 c c + | fun_cunpacknum__case_1 : forall (c : lit_), fun_cunpacknum_ .I64 c c + | fun_cunpacknum__case_2 : forall (c : lit_), fun_cunpacknum_ .F32 c c + | fun_cunpacknum__case_3 : forall (c : lit_), fun_cunpacknum_ .F64 c c + | fun_cunpacknum__case_4 : forall (c : lit_), fun_cunpacknum_ .V128 c c + | fun_cunpacknum__case_5 : forall (c : uN), + ((cunpack (storagetype_packtype .I8)) != none) -> + (wf_lit_ (storagetype_consttype (Option.get! (cunpack (storagetype_packtype .I8)))) (.mk_lit__0 .I32 (.mk_num__0 .I32 (extend__ (psize .I8) (size (lunpack (lanetype_packtype .I8))) .U c)))) -> + fun_cunpacknum_ .I8 (.mk_lit__2 .I8 c) (.mk_lit__0 .I32 (.mk_num__0 .I32 (extend__ (psize .I8) (size (lunpack (lanetype_packtype .I8))) .U c))) + | fun_cunpacknum__case_6 : forall (c : uN), + ((cunpack (storagetype_packtype .I16)) != none) -> + (wf_lit_ (storagetype_consttype (Option.get! (cunpack (storagetype_packtype .I16)))) (.mk_lit__0 .I32 (.mk_num__0 .I32 (extend__ (psize .I16) (size (lunpack (lanetype_packtype .I16))) .U c)))) -> + fun_cunpacknum_ .I16 (.mk_lit__2 .I16 c) (.mk_lit__0 .I32 (.mk_num__0 .I32 (extend__ (psize .I16) (size (lunpack (lanetype_packtype .I16))) .U c))) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:364.6-364.12 -/ +inductive fun_unop_ : numtype -> unop_ -> num_ -> (List num_) -> Prop where + | fun_unop__case_0 : forall (i : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (iclz_ (sizenn (numtype_addrtype .I32)) i))) -> + fun_unop_ .I32 (.mk_unop__0 .I32 .CLZ) (.mk_num__0 .I32 i) [(.mk_num__0 .I32 (iclz_ (sizenn (numtype_addrtype .I32)) i))] + | fun_unop__case_1 : forall (i : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (iclz_ (sizenn (numtype_addrtype .I64)) i))) -> + fun_unop_ .I64 (.mk_unop__0 .I64 .CLZ) (.mk_num__0 .I64 i) [(.mk_num__0 .I64 (iclz_ (sizenn (numtype_addrtype .I64)) i))] + | fun_unop__case_2 : forall (i : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (ictz_ (sizenn (numtype_addrtype .I32)) i))) -> + fun_unop_ .I32 (.mk_unop__0 .I32 .CTZ) (.mk_num__0 .I32 i) [(.mk_num__0 .I32 (ictz_ (sizenn (numtype_addrtype .I32)) i))] + | fun_unop__case_3 : forall (i : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (ictz_ (sizenn (numtype_addrtype .I64)) i))) -> + fun_unop_ .I64 (.mk_unop__0 .I64 .CTZ) (.mk_num__0 .I64 i) [(.mk_num__0 .I64 (ictz_ (sizenn (numtype_addrtype .I64)) i))] + | fun_unop__case_4 : forall (i : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (ipopcnt_ (sizenn (numtype_addrtype .I32)) i))) -> + fun_unop_ .I32 (.mk_unop__0 .I32 .POPCNT) (.mk_num__0 .I32 i) [(.mk_num__0 .I32 (ipopcnt_ (sizenn (numtype_addrtype .I32)) i))] + | fun_unop__case_5 : forall (i : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (ipopcnt_ (sizenn (numtype_addrtype .I64)) i))) -> + fun_unop_ .I64 (.mk_unop__0 .I64 .POPCNT) (.mk_num__0 .I64 i) [(.mk_num__0 .I64 (ipopcnt_ (sizenn (numtype_addrtype .I64)) i))] + | fun_unop__case_6 : forall (v_M : Nat) (i : uN) (var_0 : uN), + (fun_iextend_ (sizenn (numtype_addrtype .I32)) v_M .S i var_0) -> + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 var_0)) -> + fun_unop_ .I32 (.mk_unop__0 .I32 (.EXTEND (.mk_sz v_M))) (.mk_num__0 .I32 i) [(.mk_num__0 .I32 var_0)] + | fun_unop__case_7 : forall (v_M : Nat) (i : uN) (var_0 : uN), + (fun_iextend_ (sizenn (numtype_addrtype .I64)) v_M .S i var_0) -> + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 var_0)) -> + fun_unop_ .I64 (.mk_unop__0 .I64 (.EXTEND (.mk_sz v_M))) (.mk_num__0 .I64 i) [(.mk_num__0 .I64 var_0)] + | fun_unop__case_8 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fabs_ (sizenn (numtype_Fnn .F32)) f) -> + fun_unop_ .F32 (.mk_unop__1 .F32 .ABS) (.mk_num__1 .F32 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fabs_ (sizenn (numtype_Fnn .F32)) f)) + | fun_unop__case_9 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fabs_ (sizenn (numtype_Fnn .F64)) f) -> + fun_unop_ .F64 (.mk_unop__1 .F64 .ABS) (.mk_num__1 .F64 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fabs_ (sizenn (numtype_Fnn .F64)) f)) + | fun_unop__case_10 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fneg_ (sizenn (numtype_Fnn .F32)) f) -> + fun_unop_ .F32 (.mk_unop__1 .F32 .NEG) (.mk_num__1 .F32 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fneg_ (sizenn (numtype_Fnn .F32)) f)) + | fun_unop__case_11 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fneg_ (sizenn (numtype_Fnn .F64)) f) -> + fun_unop_ .F64 (.mk_unop__1 .F64 .NEG) (.mk_num__1 .F64 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fneg_ (sizenn (numtype_Fnn .F64)) f)) + | fun_unop__case_12 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fsqrt_ (sizenn (numtype_Fnn .F32)) f) -> + fun_unop_ .F32 (.mk_unop__1 .F32 .SQRT) (.mk_num__1 .F32 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fsqrt_ (sizenn (numtype_Fnn .F32)) f)) + | fun_unop__case_13 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fsqrt_ (sizenn (numtype_Fnn .F64)) f) -> + fun_unop_ .F64 (.mk_unop__1 .F64 .SQRT) (.mk_num__1 .F64 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fsqrt_ (sizenn (numtype_Fnn .F64)) f)) + | fun_unop__case_14 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fceil_ (sizenn (numtype_Fnn .F32)) f) -> + fun_unop_ .F32 (.mk_unop__1 .F32 .CEIL) (.mk_num__1 .F32 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fceil_ (sizenn (numtype_Fnn .F32)) f)) + | fun_unop__case_15 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fceil_ (sizenn (numtype_Fnn .F64)) f) -> + fun_unop_ .F64 (.mk_unop__1 .F64 .CEIL) (.mk_num__1 .F64 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fceil_ (sizenn (numtype_Fnn .F64)) f)) + | fun_unop__case_16 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (ffloor_ (sizenn (numtype_Fnn .F32)) f) -> + fun_unop_ .F32 (.mk_unop__1 .F32 .FLOOR) (.mk_num__1 .F32 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (ffloor_ (sizenn (numtype_Fnn .F32)) f)) + | fun_unop__case_17 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (ffloor_ (sizenn (numtype_Fnn .F64)) f) -> + fun_unop_ .F64 (.mk_unop__1 .F64 .FLOOR) (.mk_num__1 .F64 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (ffloor_ (sizenn (numtype_Fnn .F64)) f)) + | fun_unop__case_18 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (ftrunc_ (sizenn (numtype_Fnn .F32)) f) -> + fun_unop_ .F32 (.mk_unop__1 .F32 .TRUNC) (.mk_num__1 .F32 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (ftrunc_ (sizenn (numtype_Fnn .F32)) f)) + | fun_unop__case_19 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (ftrunc_ (sizenn (numtype_Fnn .F64)) f) -> + fun_unop_ .F64 (.mk_unop__1 .F64 .TRUNC) (.mk_num__1 .F64 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (ftrunc_ (sizenn (numtype_Fnn .F64)) f)) + | fun_unop__case_20 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fnearest_ (sizenn (numtype_Fnn .F32)) f) -> + fun_unop_ .F32 (.mk_unop__1 .F32 .NEAREST) (.mk_num__1 .F32 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fnearest_ (sizenn (numtype_Fnn .F32)) f)) + | fun_unop__case_21 : forall (f : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fnearest_ (sizenn (numtype_Fnn .F64)) f) -> + fun_unop_ .F64 (.mk_unop__1 .F64 .NEAREST) (.mk_num__1 .F64 f) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fnearest_ (sizenn (numtype_Fnn .F64)) f)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:366.6-366.13 -/ +inductive fun_binop_ : numtype -> binop_ -> num_ -> num_ -> (List num_) -> Prop where + | fun_binop__case_0 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (iadd_ (sizenn (numtype_addrtype .I32)) i_1 i_2))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .ADD) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (iadd_ (sizenn (numtype_addrtype .I32)) i_1 i_2))] + | fun_binop__case_1 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (iadd_ (sizenn (numtype_addrtype .I64)) i_1 i_2))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .ADD) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (iadd_ (sizenn (numtype_addrtype .I64)) i_1 i_2))] + | fun_binop__case_2 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (isub_ (sizenn (numtype_addrtype .I32)) i_1 i_2))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .SUB) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (isub_ (sizenn (numtype_addrtype .I32)) i_1 i_2))] + | fun_binop__case_3 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (isub_ (sizenn (numtype_addrtype .I64)) i_1 i_2))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .SUB) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (isub_ (sizenn (numtype_addrtype .I64)) i_1 i_2))] + | fun_binop__case_4 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (imul_ (sizenn (numtype_addrtype .I32)) i_1 i_2))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .MUL) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (imul_ (sizenn (numtype_addrtype .I32)) i_1 i_2))] + | fun_binop__case_5 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (imul_ (sizenn (numtype_addrtype .I64)) i_1 i_2))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .MUL) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (imul_ (sizenn (numtype_addrtype .I64)) i_1 i_2))] + | fun_binop__case_6 : forall (v_sx : sx) (i_1 : uN) (i_2 : uN) (var_0 : (Option iN)), + (fun_idiv_ (sizenn (numtype_addrtype .I32)) v_sx i_1 i_2 var_0) -> + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 iter_0))) (Option.toList var_0) -> + fun_binop_ .I32 (.mk_binop__0 .I32 (.DIV v_sx)) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I32 iter_0)) (Option.toList var_0)) + | fun_binop__case_7 : forall (v_sx : sx) (i_1 : uN) (i_2 : uN) (var_0 : (Option iN)), + (fun_idiv_ (sizenn (numtype_addrtype .I64)) v_sx i_1 i_2 var_0) -> + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 iter_0))) (Option.toList var_0) -> + fun_binop_ .I64 (.mk_binop__0 .I64 (.DIV v_sx)) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I64 iter_0)) (Option.toList var_0)) + | fun_binop__case_8 : forall (v_sx : sx) (i_1 : uN) (i_2 : uN) (var_0 : (Option iN)), + (fun_irem_ (sizenn (numtype_addrtype .I32)) v_sx i_1 i_2 var_0) -> + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 iter_0))) (Option.toList var_0) -> + fun_binop_ .I32 (.mk_binop__0 .I32 (.REM v_sx)) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I32 iter_0)) (Option.toList var_0)) + | fun_binop__case_9 : forall (v_sx : sx) (i_1 : uN) (i_2 : uN) (var_0 : (Option iN)), + (fun_irem_ (sizenn (numtype_addrtype .I64)) v_sx i_1 i_2 var_0) -> + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 iter_0))) (Option.toList var_0) -> + fun_binop_ .I64 (.mk_binop__0 .I64 (.REM v_sx)) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I64 iter_0)) (Option.toList var_0)) + | fun_binop__case_10 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (iand_ (sizenn (numtype_addrtype .I32)) i_1 i_2))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .AND) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (iand_ (sizenn (numtype_addrtype .I32)) i_1 i_2))] + | fun_binop__case_11 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (iand_ (sizenn (numtype_addrtype .I64)) i_1 i_2))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .AND) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (iand_ (sizenn (numtype_addrtype .I64)) i_1 i_2))] + | fun_binop__case_12 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (ior_ (sizenn (numtype_addrtype .I32)) i_1 i_2))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .OR) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (ior_ (sizenn (numtype_addrtype .I32)) i_1 i_2))] + | fun_binop__case_13 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (ior_ (sizenn (numtype_addrtype .I64)) i_1 i_2))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .OR) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (ior_ (sizenn (numtype_addrtype .I64)) i_1 i_2))] + | fun_binop__case_14 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (ixor_ (sizenn (numtype_addrtype .I32)) i_1 i_2))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .XOR) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (ixor_ (sizenn (numtype_addrtype .I32)) i_1 i_2))] + | fun_binop__case_15 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (ixor_ (sizenn (numtype_addrtype .I64)) i_1 i_2))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .XOR) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (ixor_ (sizenn (numtype_addrtype .I64)) i_1 i_2))] + | fun_binop__case_16 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (ishl_ (sizenn (numtype_addrtype .I32)) i_1 (.mk_uN (proj_uN_0 i_2))))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .SHL) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (ishl_ (sizenn (numtype_addrtype .I32)) i_1 (.mk_uN (proj_uN_0 i_2))))] + | fun_binop__case_17 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (ishl_ (sizenn (numtype_addrtype .I64)) i_1 (.mk_uN (proj_uN_0 i_2))))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .SHL) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (ishl_ (sizenn (numtype_addrtype .I64)) i_1 (.mk_uN (proj_uN_0 i_2))))] + | fun_binop__case_18 : forall (v_sx : sx) (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (ishr_ (sizenn (numtype_addrtype .I32)) v_sx i_1 (.mk_uN (proj_uN_0 i_2))))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 (.SHR v_sx)) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (ishr_ (sizenn (numtype_addrtype .I32)) v_sx i_1 (.mk_uN (proj_uN_0 i_2))))] + | fun_binop__case_19 : forall (v_sx : sx) (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (ishr_ (sizenn (numtype_addrtype .I64)) v_sx i_1 (.mk_uN (proj_uN_0 i_2))))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 (.SHR v_sx)) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (ishr_ (sizenn (numtype_addrtype .I64)) v_sx i_1 (.mk_uN (proj_uN_0 i_2))))] + | fun_binop__case_20 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (irotl_ (sizenn (numtype_addrtype .I32)) i_1 i_2))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .ROTL) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (irotl_ (sizenn (numtype_addrtype .I32)) i_1 i_2))] + | fun_binop__case_21 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (irotl_ (sizenn (numtype_addrtype .I64)) i_1 i_2))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .ROTL) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (irotl_ (sizenn (numtype_addrtype .I64)) i_1 i_2))] + | fun_binop__case_22 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (irotr_ (sizenn (numtype_addrtype .I32)) i_1 i_2))) -> + fun_binop_ .I32 (.mk_binop__0 .I32 .ROTR) (.mk_num__0 .I32 i_1) (.mk_num__0 .I32 i_2) [(.mk_num__0 .I32 (irotr_ (sizenn (numtype_addrtype .I32)) i_1 i_2))] + | fun_binop__case_23 : forall (i_1 : uN) (i_2 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (irotr_ (sizenn (numtype_addrtype .I64)) i_1 i_2))) -> + fun_binop_ .I64 (.mk_binop__0 .I64 .ROTR) (.mk_num__0 .I64 i_1) (.mk_num__0 .I64 i_2) [(.mk_num__0 .I64 (irotr_ (sizenn (numtype_addrtype .I64)) i_1 i_2))] + | fun_binop__case_24 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fadd_ (sizenn (numtype_Fnn .F32)) f_1 f_2) -> + fun_binop_ .F32 (.mk_binop__1 .F32 .ADD) (.mk_num__1 .F32 f_1) (.mk_num__1 .F32 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fadd_ (sizenn (numtype_Fnn .F32)) f_1 f_2)) + | fun_binop__case_25 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fadd_ (sizenn (numtype_Fnn .F64)) f_1 f_2) -> + fun_binop_ .F64 (.mk_binop__1 .F64 .ADD) (.mk_num__1 .F64 f_1) (.mk_num__1 .F64 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fadd_ (sizenn (numtype_Fnn .F64)) f_1 f_2)) + | fun_binop__case_26 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fsub_ (sizenn (numtype_Fnn .F32)) f_1 f_2) -> + fun_binop_ .F32 (.mk_binop__1 .F32 .SUB) (.mk_num__1 .F32 f_1) (.mk_num__1 .F32 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fsub_ (sizenn (numtype_Fnn .F32)) f_1 f_2)) + | fun_binop__case_27 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fsub_ (sizenn (numtype_Fnn .F64)) f_1 f_2) -> + fun_binop_ .F64 (.mk_binop__1 .F64 .SUB) (.mk_num__1 .F64 f_1) (.mk_num__1 .F64 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fsub_ (sizenn (numtype_Fnn .F64)) f_1 f_2)) + | fun_binop__case_28 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fmul_ (sizenn (numtype_Fnn .F32)) f_1 f_2) -> + fun_binop_ .F32 (.mk_binop__1 .F32 .MUL) (.mk_num__1 .F32 f_1) (.mk_num__1 .F32 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fmul_ (sizenn (numtype_Fnn .F32)) f_1 f_2)) + | fun_binop__case_29 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fmul_ (sizenn (numtype_Fnn .F64)) f_1 f_2) -> + fun_binop_ .F64 (.mk_binop__1 .F64 .MUL) (.mk_num__1 .F64 f_1) (.mk_num__1 .F64 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fmul_ (sizenn (numtype_Fnn .F64)) f_1 f_2)) + | fun_binop__case_30 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fdiv_ (sizenn (numtype_Fnn .F32)) f_1 f_2) -> + fun_binop_ .F32 (.mk_binop__1 .F32 .DIV) (.mk_num__1 .F32 f_1) (.mk_num__1 .F32 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fdiv_ (sizenn (numtype_Fnn .F32)) f_1 f_2)) + | fun_binop__case_31 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fdiv_ (sizenn (numtype_Fnn .F64)) f_1 f_2) -> + fun_binop_ .F64 (.mk_binop__1 .F64 .DIV) (.mk_num__1 .F64 f_1) (.mk_num__1 .F64 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fdiv_ (sizenn (numtype_Fnn .F64)) f_1 f_2)) + | fun_binop__case_32 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fmin_ (sizenn (numtype_Fnn .F32)) f_1 f_2) -> + fun_binop_ .F32 (.mk_binop__1 .F32 .MIN) (.mk_num__1 .F32 f_1) (.mk_num__1 .F32 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fmin_ (sizenn (numtype_Fnn .F32)) f_1 f_2)) + | fun_binop__case_33 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fmin_ (sizenn (numtype_Fnn .F64)) f_1 f_2) -> + fun_binop_ .F64 (.mk_binop__1 .F64 .MIN) (.mk_num__1 .F64 f_1) (.mk_num__1 .F64 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fmin_ (sizenn (numtype_Fnn .F64)) f_1 f_2)) + | fun_binop__case_34 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fmax_ (sizenn (numtype_Fnn .F32)) f_1 f_2) -> + fun_binop_ .F32 (.mk_binop__1 .F32 .MAX) (.mk_num__1 .F32 f_1) (.mk_num__1 .F32 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fmax_ (sizenn (numtype_Fnn .F32)) f_1 f_2)) + | fun_binop__case_35 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fmax_ (sizenn (numtype_Fnn .F64)) f_1 f_2) -> + fun_binop_ .F64 (.mk_binop__1 .F64 .MAX) (.mk_num__1 .F64 f_1) (.mk_num__1 .F64 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fmax_ (sizenn (numtype_Fnn .F64)) f_1 f_2)) + | fun_binop__case_36 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (fcopysign_ (sizenn (numtype_Fnn .F32)) f_1 f_2) -> + fun_binop_ .F32 (.mk_binop__1 .F32 .COPYSIGN) (.mk_num__1 .F32 f_1) (.mk_num__1 .F32 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (fcopysign_ (sizenn (numtype_Fnn .F32)) f_1 f_2)) + | fun_binop__case_37 : forall (f_1 : fN) (f_2 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (fcopysign_ (sizenn (numtype_Fnn .F64)) f_1 f_2) -> + fun_binop_ .F64 (.mk_binop__1 .F64 .COPYSIGN) (.mk_num__1 .F64 f_1) (.mk_num__1 .F64 f_2) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (fcopysign_ (sizenn (numtype_Fnn .F64)) f_1 f_2)) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:368.1-369.28 -/ +def fun_testop_ : ∀ (v_numtype : numtype) (v_testop_ : testop_) (v_num_ : num_) , u32 + | .I32, (.mk_testop__0 .I32 .EQZ), (.mk_num__0 .I32 i) => + (ieqz_ (sizenn (numtype_addrtype .I32)) i) + | .I64, (.mk_testop__0 .I64 .EQZ), (.mk_num__0 .I64 i) => + (ieqz_ (sizenn (numtype_addrtype .I64)) i) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:370.1-371.32 -/ +def fun_relop_ : ∀ (v_numtype : numtype) (v_relop_ : relop_) (v_num_ : num_) (v_num__0 : num_) , u32 + | .I32, (.mk_relop__0 .I32 .EQ), (.mk_num__0 .I32 i_1), (.mk_num__0 .I32 i_2) => + (ieq_ (sizenn (numtype_addrtype .I32)) i_1 i_2) + | .I64, (.mk_relop__0 .I64 .EQ), (.mk_num__0 .I64 i_1), (.mk_num__0 .I64 i_2) => + (ieq_ (sizenn (numtype_addrtype .I64)) i_1 i_2) + | .I32, (.mk_relop__0 .I32 .NE), (.mk_num__0 .I32 i_1), (.mk_num__0 .I32 i_2) => + (ine_ (sizenn (numtype_addrtype .I32)) i_1 i_2) + | .I64, (.mk_relop__0 .I64 .NE), (.mk_num__0 .I64 i_1), (.mk_num__0 .I64 i_2) => + (ine_ (sizenn (numtype_addrtype .I64)) i_1 i_2) + | .I32, (.mk_relop__0 .I32 (.LT v_sx)), (.mk_num__0 .I32 i_1), (.mk_num__0 .I32 i_2) => + (ilt_ (sizenn (numtype_addrtype .I32)) v_sx i_1 i_2) + | .I64, (.mk_relop__0 .I64 (.LT v_sx)), (.mk_num__0 .I64 i_1), (.mk_num__0 .I64 i_2) => + (ilt_ (sizenn (numtype_addrtype .I64)) v_sx i_1 i_2) + | .I32, (.mk_relop__0 .I32 (.GT v_sx)), (.mk_num__0 .I32 i_1), (.mk_num__0 .I32 i_2) => + (igt_ (sizenn (numtype_addrtype .I32)) v_sx i_1 i_2) + | .I64, (.mk_relop__0 .I64 (.GT v_sx)), (.mk_num__0 .I64 i_1), (.mk_num__0 .I64 i_2) => + (igt_ (sizenn (numtype_addrtype .I64)) v_sx i_1 i_2) + | .I32, (.mk_relop__0 .I32 (.LE v_sx)), (.mk_num__0 .I32 i_1), (.mk_num__0 .I32 i_2) => + (ile_ (sizenn (numtype_addrtype .I32)) v_sx i_1 i_2) + | .I64, (.mk_relop__0 .I64 (.LE v_sx)), (.mk_num__0 .I64 i_1), (.mk_num__0 .I64 i_2) => + (ile_ (sizenn (numtype_addrtype .I64)) v_sx i_1 i_2) + | .I32, (.mk_relop__0 .I32 (.GE v_sx)), (.mk_num__0 .I32 i_1), (.mk_num__0 .I32 i_2) => + (ige_ (sizenn (numtype_addrtype .I32)) v_sx i_1 i_2) + | .I64, (.mk_relop__0 .I64 (.GE v_sx)), (.mk_num__0 .I64 i_1), (.mk_num__0 .I64 i_2) => + (ige_ (sizenn (numtype_addrtype .I64)) v_sx i_1 i_2) + | .F32, (.mk_relop__1 .F32 .EQ), (.mk_num__1 .F32 f_1), (.mk_num__1 .F32 f_2) => + (feq_ (sizenn (numtype_Fnn .F32)) f_1 f_2) + | .F64, (.mk_relop__1 .F64 .EQ), (.mk_num__1 .F64 f_1), (.mk_num__1 .F64 f_2) => + (feq_ (sizenn (numtype_Fnn .F64)) f_1 f_2) + | .F32, (.mk_relop__1 .F32 .NE), (.mk_num__1 .F32 f_1), (.mk_num__1 .F32 f_2) => + (fne_ (sizenn (numtype_Fnn .F32)) f_1 f_2) + | .F64, (.mk_relop__1 .F64 .NE), (.mk_num__1 .F64 f_1), (.mk_num__1 .F64 f_2) => + (fne_ (sizenn (numtype_Fnn .F64)) f_1 f_2) + | .F32, (.mk_relop__1 .F32 .LT), (.mk_num__1 .F32 f_1), (.mk_num__1 .F32 f_2) => + (flt_ (sizenn (numtype_Fnn .F32)) f_1 f_2) + | .F64, (.mk_relop__1 .F64 .LT), (.mk_num__1 .F64 f_1), (.mk_num__1 .F64 f_2) => + (flt_ (sizenn (numtype_Fnn .F64)) f_1 f_2) + | .F32, (.mk_relop__1 .F32 .GT), (.mk_num__1 .F32 f_1), (.mk_num__1 .F32 f_2) => + (fgt_ (sizenn (numtype_Fnn .F32)) f_1 f_2) + | .F64, (.mk_relop__1 .F64 .GT), (.mk_num__1 .F64 f_1), (.mk_num__1 .F64 f_2) => + (fgt_ (sizenn (numtype_Fnn .F64)) f_1 f_2) + | .F32, (.mk_relop__1 .F32 .LE), (.mk_num__1 .F32 f_1), (.mk_num__1 .F32 f_2) => + (fle_ (sizenn (numtype_Fnn .F32)) f_1 f_2) + | .F64, (.mk_relop__1 .F64 .LE), (.mk_num__1 .F64 f_1), (.mk_num__1 .F64 f_2) => + (fle_ (sizenn (numtype_Fnn .F64)) f_1 f_2) + | .F32, (.mk_relop__1 .F32 .GE), (.mk_num__1 .F32 f_1), (.mk_num__1 .F32 f_2) => + (fge_ (sizenn (numtype_Fnn .F32)) f_1 f_2) + | .F64, (.mk_relop__1 .F64 .GE), (.mk_num__1 .F64 f_1), (.mk_num__1 .F64 f_2) => + (fge_ (sizenn (numtype_Fnn .F64)) f_1 f_2) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec:372.6-372.14 -/ +inductive fun_cvtop__ : numtype -> numtype -> cvtop__ -> num_ -> (List num_) -> Prop where + | fun_cvtop___case_0 : forall (v_sx : sx) (i_1 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (extend__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_addrtype .I32)) v_sx i_1))) -> + fun_cvtop__ .I32 .I32 (.mk_cvtop___0 .I32 .I32 (.EXTEND v_sx)) (.mk_num__0 .I32 i_1) [(.mk_num__0 .I32 (extend__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_addrtype .I32)) v_sx i_1))] + | fun_cvtop___case_1 : forall (v_sx : sx) (i_1 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (extend__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_addrtype .I32)) v_sx i_1))) -> + fun_cvtop__ .I64 .I32 (.mk_cvtop___0 .I64 .I32 (.EXTEND v_sx)) (.mk_num__0 .I64 i_1) [(.mk_num__0 .I32 (extend__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_addrtype .I32)) v_sx i_1))] + | fun_cvtop___case_2 : forall (v_sx : sx) (i_1 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (extend__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_addrtype .I64)) v_sx i_1))) -> + fun_cvtop__ .I32 .I64 (.mk_cvtop___0 .I32 .I64 (.EXTEND v_sx)) (.mk_num__0 .I32 i_1) [(.mk_num__0 .I64 (extend__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_addrtype .I64)) v_sx i_1))] + | fun_cvtop___case_3 : forall (v_sx : sx) (i_1 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (extend__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_addrtype .I64)) v_sx i_1))) -> + fun_cvtop__ .I64 .I64 (.mk_cvtop___0 .I64 .I64 (.EXTEND v_sx)) (.mk_num__0 .I64 i_1) [(.mk_num__0 .I64 (extend__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_addrtype .I64)) v_sx i_1))] + | fun_cvtop___case_4 : forall (i_1 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (wrap__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_addrtype .I32)) i_1))) -> + fun_cvtop__ .I32 .I32 (.mk_cvtop___0 .I32 .I32 .WRAP) (.mk_num__0 .I32 i_1) [(.mk_num__0 .I32 (wrap__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_addrtype .I32)) i_1))] + | fun_cvtop___case_5 : forall (i_1 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 (wrap__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_addrtype .I32)) i_1))) -> + fun_cvtop__ .I64 .I32 (.mk_cvtop___0 .I64 .I32 .WRAP) (.mk_num__0 .I64 i_1) [(.mk_num__0 .I32 (wrap__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_addrtype .I32)) i_1))] + | fun_cvtop___case_6 : forall (i_1 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (wrap__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_addrtype .I64)) i_1))) -> + fun_cvtop__ .I32 .I64 (.mk_cvtop___0 .I32 .I64 .WRAP) (.mk_num__0 .I32 i_1) [(.mk_num__0 .I64 (wrap__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_addrtype .I64)) i_1))] + | fun_cvtop___case_7 : forall (i_1 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 (wrap__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_addrtype .I64)) i_1))) -> + fun_cvtop__ .I64 .I64 (.mk_cvtop___0 .I64 .I64 .WRAP) (.mk_num__0 .I64 i_1) [(.mk_num__0 .I64 (wrap__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_addrtype .I64)) i_1))] + | fun_cvtop___case_8 : forall (v_sx : sx) (f_1 : fN), + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 iter_0))) (Option.toList (trunc__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_addrtype .I32)) v_sx f_1)) -> + fun_cvtop__ .F32 .I32 (.mk_cvtop___2 .F32 .I32 (.TRUNC v_sx)) (.mk_num__1 .F32 f_1) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I32 iter_0)) (Option.toList (trunc__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_addrtype .I32)) v_sx f_1))) + | fun_cvtop___case_9 : forall (v_sx : sx) (f_1 : fN), + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 iter_0))) (Option.toList (trunc__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_addrtype .I32)) v_sx f_1)) -> + fun_cvtop__ .F64 .I32 (.mk_cvtop___2 .F64 .I32 (.TRUNC v_sx)) (.mk_num__1 .F64 f_1) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I32 iter_0)) (Option.toList (trunc__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_addrtype .I32)) v_sx f_1))) + | fun_cvtop___case_10 : forall (v_sx : sx) (f_1 : fN), + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 iter_0))) (Option.toList (trunc__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_addrtype .I64)) v_sx f_1)) -> + fun_cvtop__ .F32 .I64 (.mk_cvtop___2 .F32 .I64 (.TRUNC v_sx)) (.mk_num__1 .F32 f_1) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I64 iter_0)) (Option.toList (trunc__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_addrtype .I64)) v_sx f_1))) + | fun_cvtop___case_11 : forall (v_sx : sx) (f_1 : fN), + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 iter_0))) (Option.toList (trunc__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_addrtype .I64)) v_sx f_1)) -> + fun_cvtop__ .F64 .I64 (.mk_cvtop___2 .F64 .I64 (.TRUNC v_sx)) (.mk_num__1 .F64 f_1) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I64 iter_0)) (Option.toList (trunc__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_addrtype .I64)) v_sx f_1))) + | fun_cvtop___case_12 : forall (v_sx : sx) (f_1 : fN), + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 iter_0))) (Option.toList (trunc_sat__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_addrtype .I32)) v_sx f_1)) -> + fun_cvtop__ .F32 .I32 (.mk_cvtop___2 .F32 .I32 (.TRUNC_SAT v_sx)) (.mk_num__1 .F32 f_1) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I32 iter_0)) (Option.toList (trunc_sat__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_addrtype .I32)) v_sx f_1))) + | fun_cvtop___case_13 : forall (v_sx : sx) (f_1 : fN), + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 iter_0))) (Option.toList (trunc_sat__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_addrtype .I32)) v_sx f_1)) -> + fun_cvtop__ .F64 .I32 (.mk_cvtop___2 .F64 .I32 (.TRUNC_SAT v_sx)) (.mk_num__1 .F64 f_1) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I32 iter_0)) (Option.toList (trunc_sat__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_addrtype .I32)) v_sx f_1))) + | fun_cvtop___case_14 : forall (v_sx : sx) (f_1 : fN), + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 iter_0))) (Option.toList (trunc_sat__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_addrtype .I64)) v_sx f_1)) -> + fun_cvtop__ .F32 .I64 (.mk_cvtop___2 .F32 .I64 (.TRUNC_SAT v_sx)) (.mk_num__1 .F32 f_1) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I64 iter_0)) (Option.toList (trunc_sat__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_addrtype .I64)) v_sx f_1))) + | fun_cvtop___case_15 : forall (v_sx : sx) (f_1 : fN), + Forall (fun (iter_0 : iN) => (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 iter_0))) (Option.toList (trunc_sat__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_addrtype .I64)) v_sx f_1)) -> + fun_cvtop__ .F64 .I64 (.mk_cvtop___2 .F64 .I64 (.TRUNC_SAT v_sx)) (.mk_num__1 .F64 f_1) (List.map (fun (iter_0 : iN) => (.mk_num__0 .I64 iter_0)) (Option.toList (trunc_sat__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_addrtype .I64)) v_sx f_1))) + | fun_cvtop___case_16 : forall (v_sx : sx) (i_1 : uN), + (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 (convert__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_Fnn .F32)) v_sx i_1))) -> + fun_cvtop__ .I32 .F32 (.mk_cvtop___1 .I32 .F32 (.CONVERT v_sx)) (.mk_num__0 .I32 i_1) [(.mk_num__1 .F32 (convert__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_Fnn .F32)) v_sx i_1))] + | fun_cvtop___case_17 : forall (v_sx : sx) (i_1 : uN), + (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 (convert__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_Fnn .F32)) v_sx i_1))) -> + fun_cvtop__ .I64 .F32 (.mk_cvtop___1 .I64 .F32 (.CONVERT v_sx)) (.mk_num__0 .I64 i_1) [(.mk_num__1 .F32 (convert__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_Fnn .F32)) v_sx i_1))] + | fun_cvtop___case_18 : forall (v_sx : sx) (i_1 : uN), + (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 (convert__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_Fnn .F64)) v_sx i_1))) -> + fun_cvtop__ .I32 .F64 (.mk_cvtop___1 .I32 .F64 (.CONVERT v_sx)) (.mk_num__0 .I32 i_1) [(.mk_num__1 .F64 (convert__ (sizenn1 (numtype_addrtype .I32)) (sizenn2 (numtype_Fnn .F64)) v_sx i_1))] + | fun_cvtop___case_19 : forall (v_sx : sx) (i_1 : uN), + (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 (convert__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_Fnn .F64)) v_sx i_1))) -> + fun_cvtop__ .I64 .F64 (.mk_cvtop___1 .I64 .F64 (.CONVERT v_sx)) (.mk_num__0 .I64 i_1) [(.mk_num__1 .F64 (convert__ (sizenn1 (numtype_addrtype .I64)) (sizenn2 (numtype_Fnn .F64)) v_sx i_1))] + | fun_cvtop___case_20 : forall (f_1 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (promote__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_Fnn .F32)) f_1) -> + fun_cvtop__ .F32 .F32 (.mk_cvtop___3 .F32 .F32 .PROMOTE) (.mk_num__1 .F32 f_1) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (promote__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_Fnn .F32)) f_1)) + | fun_cvtop___case_21 : forall (f_1 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (promote__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_Fnn .F32)) f_1) -> + fun_cvtop__ .F64 .F32 (.mk_cvtop___3 .F64 .F32 .PROMOTE) (.mk_num__1 .F64 f_1) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (promote__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_Fnn .F32)) f_1)) + | fun_cvtop___case_22 : forall (f_1 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (promote__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_Fnn .F64)) f_1) -> + fun_cvtop__ .F32 .F64 (.mk_cvtop___3 .F32 .F64 .PROMOTE) (.mk_num__1 .F32 f_1) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (promote__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_Fnn .F64)) f_1)) + | fun_cvtop___case_23 : forall (f_1 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (promote__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_Fnn .F64)) f_1) -> + fun_cvtop__ .F64 .F64 (.mk_cvtop___3 .F64 .F64 .PROMOTE) (.mk_num__1 .F64 f_1) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (promote__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_Fnn .F64)) f_1)) + | fun_cvtop___case_24 : forall (f_1 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (demote__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_Fnn .F32)) f_1) -> + fun_cvtop__ .F32 .F32 (.mk_cvtop___3 .F32 .F32 .DEMOTE) (.mk_num__1 .F32 f_1) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (demote__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_Fnn .F32)) f_1)) + | fun_cvtop___case_25 : forall (f_1 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 iter_0))) (demote__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_Fnn .F32)) f_1) -> + fun_cvtop__ .F64 .F32 (.mk_cvtop___3 .F64 .F32 .DEMOTE) (.mk_num__1 .F64 f_1) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F32 iter_0)) (demote__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_Fnn .F32)) f_1)) + | fun_cvtop___case_26 : forall (f_1 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (demote__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_Fnn .F64)) f_1) -> + fun_cvtop__ .F32 .F64 (.mk_cvtop___3 .F32 .F64 .DEMOTE) (.mk_num__1 .F32 f_1) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (demote__ (sizenn1 (numtype_Fnn .F32)) (sizenn2 (numtype_Fnn .F64)) f_1)) + | fun_cvtop___case_27 : forall (f_1 : fN), + Forall (fun (iter_0 : fN) => (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 iter_0))) (demote__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_Fnn .F64)) f_1) -> + fun_cvtop__ .F64 .F64 (.mk_cvtop___3 .F64 .F64 .DEMOTE) (.mk_num__1 .F64 f_1) (List.map (fun (iter_0 : fN) => (.mk_num__1 .F64 iter_0)) (demote__ (sizenn1 (numtype_Fnn .F64)) (sizenn2 (numtype_Fnn .F64)) f_1)) + | fun_cvtop___case_28 : forall (i_1 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 i_1)) -> + ((size (numtype_addrtype .I32)) == (size (numtype_Fnn .F32))) -> + fun_cvtop__ .I32 .F32 (.mk_cvtop___1 .I32 .F32 .REINTERPRET) (.mk_num__0 .I32 i_1) [(reinterpret__ (numtype_addrtype .I32) (numtype_Fnn .F32) (.mk_num__0 .I32 i_1))] + | fun_cvtop___case_29 : forall (i_1 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 i_1)) -> + ((size (numtype_addrtype .I64)) == (size (numtype_Fnn .F32))) -> + fun_cvtop__ .I64 .F32 (.mk_cvtop___1 .I64 .F32 .REINTERPRET) (.mk_num__0 .I64 i_1) [(reinterpret__ (numtype_addrtype .I64) (numtype_Fnn .F32) (.mk_num__0 .I64 i_1))] + | fun_cvtop___case_30 : forall (i_1 : uN), + (wf_num_ (numtype_addrtype .I32) (.mk_num__0 .I32 i_1)) -> + ((size (numtype_addrtype .I32)) == (size (numtype_Fnn .F64))) -> + fun_cvtop__ .I32 .F64 (.mk_cvtop___1 .I32 .F64 .REINTERPRET) (.mk_num__0 .I32 i_1) [(reinterpret__ (numtype_addrtype .I32) (numtype_Fnn .F64) (.mk_num__0 .I32 i_1))] + | fun_cvtop___case_31 : forall (i_1 : uN), + (wf_num_ (numtype_addrtype .I64) (.mk_num__0 .I64 i_1)) -> + ((size (numtype_addrtype .I64)) == (size (numtype_Fnn .F64))) -> + fun_cvtop__ .I64 .F64 (.mk_cvtop___1 .I64 .F64 .REINTERPRET) (.mk_num__0 .I64 i_1) [(reinterpret__ (numtype_addrtype .I64) (numtype_Fnn .F64) (.mk_num__0 .I64 i_1))] + | fun_cvtop___case_32 : forall (f_1 : fN), + (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 f_1)) -> + ((size (numtype_Fnn .F32)) == (size (numtype_addrtype .I32))) -> + fun_cvtop__ .F32 .I32 (.mk_cvtop___2 .F32 .I32 .REINTERPRET) (.mk_num__1 .F32 f_1) [(reinterpret__ (numtype_Fnn .F32) (numtype_addrtype .I32) (.mk_num__1 .F32 f_1))] + | fun_cvtop___case_33 : forall (f_1 : fN), + (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 f_1)) -> + ((size (numtype_Fnn .F64)) == (size (numtype_addrtype .I32))) -> + fun_cvtop__ .F64 .I32 (.mk_cvtop___2 .F64 .I32 .REINTERPRET) (.mk_num__1 .F64 f_1) [(reinterpret__ (numtype_Fnn .F64) (numtype_addrtype .I32) (.mk_num__1 .F64 f_1))] + | fun_cvtop___case_34 : forall (f_1 : fN), + (wf_num_ (numtype_Fnn .F32) (.mk_num__1 .F32 f_1)) -> + ((size (numtype_Fnn .F32)) == (size (numtype_addrtype .I64))) -> + fun_cvtop__ .F32 .I64 (.mk_cvtop___2 .F32 .I64 .REINTERPRET) (.mk_num__1 .F32 f_1) [(reinterpret__ (numtype_Fnn .F32) (numtype_addrtype .I64) (.mk_num__1 .F32 f_1))] + | fun_cvtop___case_35 : forall (f_1 : fN), + (wf_num_ (numtype_Fnn .F64) (.mk_num__1 .F64 f_1)) -> + ((size (numtype_Fnn .F64)) == (size (numtype_addrtype .I64))) -> + fun_cvtop__ .F64 .I64 (.mk_cvtop___2 .F64 .I64 .REINTERPRET) (.mk_num__1 .F64 f_1) [(reinterpret__ (numtype_Fnn .F64) (numtype_addrtype .I64) (.mk_num__1 .F64 f_1))] + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:10.1-10.84 -/ +opaque lanes_ : forall (v_shape : shape) (v_vec_ : vec_), (List lane_) := opaqueDef + +/- Axiom Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:12.1-13.37 -/ +opaque inv_lanes_ : forall (v_shape : shape) (var_0 : (List lane_)), vec_ := opaqueDef + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:19.6-19.13 -/ +inductive fun_zeroop : shape -> shape -> vcvtop__ -> (Option zero) -> Prop where + | fun_zeroop_case_0 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I32 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_1 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I32 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_2 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I8 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I32 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_3 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I16 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I32 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_4 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I64 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_5 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I64 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_6 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I8 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I64 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_7 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I16 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I64 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_8 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I32 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I8 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_9 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I64 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I8 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_10 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I8 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I8 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_11 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I16 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I8 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_12 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I32 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I16 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_13 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I64 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I16 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_14 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I8 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I16 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_15 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_zeroop (.X .I16 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I16 M_2 (.EXTEND v_half v_sx)) none + | fun_zeroop_case_16 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_zeroop (.X .I32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I32 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) none + | fun_zeroop_case_17 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_zeroop (.X .I64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I64 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) none + | fun_zeroop_case_18 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_zeroop (.X .I8 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I8 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) none + | fun_zeroop_case_19 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_zeroop (.X .I16 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I16 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) none + | fun_zeroop_case_20 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_zeroop (.X .I32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I32 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) none + | fun_zeroop_case_21 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_zeroop (.X .I64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I64 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) none + | fun_zeroop_case_22 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_zeroop (.X .I8 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I8 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) none + | fun_zeroop_case_23 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_zeroop (.X .I16 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I16 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) none + | fun_zeroop_case_24 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) zero_opt + | fun_zeroop_case_25 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) zero_opt + | fun_zeroop_case_26 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) zero_opt + | fun_zeroop_case_27 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) zero_opt + | fun_zeroop_case_28 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I8 M_2 (.TRUNC_SAT v_sx zero_opt)) zero_opt + | fun_zeroop_case_29 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I8 M_2 (.TRUNC_SAT v_sx zero_opt)) zero_opt + | fun_zeroop_case_30 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I16 M_2 (.TRUNC_SAT v_sx zero_opt)) zero_opt + | fun_zeroop_case_31 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I16 M_2 (.TRUNC_SAT v_sx zero_opt)) zero_opt + | fun_zeroop_case_32 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) zero_opt + | fun_zeroop_case_33 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) zero_opt + | fun_zeroop_case_34 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) zero_opt + | fun_zeroop_case_35 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) zero_opt + | fun_zeroop_case_36 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I8 M_2 (.RELAXED_TRUNC v_sx zero_opt)) zero_opt + | fun_zeroop_case_37 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I8 M_2 (.RELAXED_TRUNC v_sx zero_opt)) zero_opt + | fun_zeroop_case_38 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I16 M_2 (.RELAXED_TRUNC v_sx zero_opt)) zero_opt + | fun_zeroop_case_39 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I16 M_2 (.RELAXED_TRUNC v_sx zero_opt)) zero_opt + | fun_zeroop_case_40 : forall (M_1 : Nat) (M_2 : Nat) (v_zero : zero), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F32 M_2 (.DEMOTE v_zero)) (some v_zero) + | fun_zeroop_case_41 : forall (M_1 : Nat) (M_2 : Nat) (v_zero : zero), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F32 M_2 (.DEMOTE v_zero)) (some v_zero) + | fun_zeroop_case_42 : forall (M_1 : Nat) (M_2 : Nat) (v_zero : zero), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F64 M_2 (.DEMOTE v_zero)) (some v_zero) + | fun_zeroop_case_43 : forall (M_1 : Nat) (M_2 : Nat) (v_zero : zero), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F64 M_2 (.DEMOTE v_zero)) (some v_zero) + | fun_zeroop_case_44 : forall (M_1 : Nat) (M_2 : Nat), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F32 M_2 .PROMOTELOW) none + | fun_zeroop_case_45 : forall (M_1 : Nat) (M_2 : Nat), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F32 M_2 .PROMOTELOW) none + | fun_zeroop_case_46 : forall (M_1 : Nat) (M_2 : Nat), fun_zeroop (.X .F32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F64 M_2 .PROMOTELOW) none + | fun_zeroop_case_47 : forall (M_1 : Nat) (M_2 : Nat), fun_zeroop (.X .F64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F64 M_2 .PROMOTELOW) none + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:27.6-27.13 -/ +inductive fun_halfop : shape -> shape -> vcvtop__ -> (Option half) -> Prop where + | fun_halfop_case_0 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I32 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_1 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I32 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_2 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I8 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I32 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_3 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I16 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I32 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_4 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I64 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_5 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I64 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_6 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I8 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I64 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_7 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I16 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I64 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_8 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I32 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I8 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_9 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I64 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I8 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_10 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I8 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I8 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_11 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I16 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I8 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_12 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I32 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I16 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_13 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I64 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I16 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_14 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I8 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I16 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_15 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx), fun_halfop (.X .I16 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I16 M_2 (.EXTEND v_half v_sx)) (some v_half) + | fun_halfop_case_16 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_halfop (.X .I32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I32 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) half_opt + | fun_halfop_case_17 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_halfop (.X .I64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I64 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) half_opt + | fun_halfop_case_18 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_halfop (.X .I8 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I8 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) half_opt + | fun_halfop_case_19 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_halfop (.X .I16 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I16 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) half_opt + | fun_halfop_case_20 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_halfop (.X .I32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I32 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) half_opt + | fun_halfop_case_21 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_halfop (.X .I64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I64 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) half_opt + | fun_halfop_case_22 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_halfop (.X .I8 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I8 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) half_opt + | fun_halfop_case_23 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx), fun_halfop (.X .I16 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I16 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) half_opt + | fun_halfop_case_24 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) none + | fun_halfop_case_25 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) none + | fun_halfop_case_26 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) none + | fun_halfop_case_27 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) none + | fun_halfop_case_28 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I8 M_2 (.TRUNC_SAT v_sx zero_opt)) none + | fun_halfop_case_29 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I8 M_2 (.TRUNC_SAT v_sx zero_opt)) none + | fun_halfop_case_30 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I16 M_2 (.TRUNC_SAT v_sx zero_opt)) none + | fun_halfop_case_31 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I16 M_2 (.TRUNC_SAT v_sx zero_opt)) none + | fun_halfop_case_32 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) none + | fun_halfop_case_33 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) none + | fun_halfop_case_34 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) none + | fun_halfop_case_35 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) none + | fun_halfop_case_36 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I8 M_2 (.RELAXED_TRUNC v_sx zero_opt)) none + | fun_halfop_case_37 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I8 M_2 (.RELAXED_TRUNC v_sx zero_opt)) none + | fun_halfop_case_38 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I16 M_2 (.RELAXED_TRUNC v_sx zero_opt)) none + | fun_halfop_case_39 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I16 M_2 (.RELAXED_TRUNC v_sx zero_opt)) none + | fun_halfop_case_40 : forall (M_1 : Nat) (M_2 : Nat) (v_zero : zero), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F32 M_2 (.DEMOTE v_zero)) none + | fun_halfop_case_41 : forall (M_1 : Nat) (M_2 : Nat) (v_zero : zero), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F32 M_2 (.DEMOTE v_zero)) none + | fun_halfop_case_42 : forall (M_1 : Nat) (M_2 : Nat) (v_zero : zero), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F64 M_2 (.DEMOTE v_zero)) none + | fun_halfop_case_43 : forall (M_1 : Nat) (M_2 : Nat) (v_zero : zero), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F64 M_2 (.DEMOTE v_zero)) none + | fun_halfop_case_44 : forall (M_1 : Nat) (M_2 : Nat), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F32 M_2 .PROMOTELOW) (some .LOW) + | fun_halfop_case_45 : forall (M_1 : Nat) (M_2 : Nat), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F32 M_2 .PROMOTELOW) (some .LOW) + | fun_halfop_case_46 : forall (M_1 : Nat) (M_2 : Nat), fun_halfop (.X .F32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F64 M_2 .PROMOTELOW) (some .LOW) + | fun_halfop_case_47 : forall (M_1 : Nat) (M_2 : Nat), fun_halfop (.X .F64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F64 M_2 .PROMOTELOW) (some .LOW) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:35.1-35.32 -/ +def fun_half : ∀ (v_half : half) (nat : Nat) (nat_0 : Nat) , Nat + | .LOW, i, j => + i + | .HIGH, i, j => + j + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:40.1-40.46 -/ +def iswizzle_lane_ : ∀ (v_N : N) (var_0 : (List iN)) (v_iN : iN) , iN + | v_N, c_lst, i => + (if ((proj_uN_0 i) < (List.length c_lst)) then (c_lst[(proj_uN_0 i)]!) else (.mk_uN 0)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:41.1-41.54 -/ +opaque irelaxed_swizzle_lane_ : forall (v_N : N) (var_0 : (List iN)) (v_iN : iN), iN := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:54.1-54.73 -/ +opaque ivunop_ : forall (v_shape : shape) (f_ : N -> iN -> iN) (v_vec_ : vec_), (List vec_) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:55.1-55.74 -/ +opaque fvunop_ : forall (v_shape : shape) (f_ : N -> fN -> (List fN)) (v_vec_ : vec_), (List vec_) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:57.1-57.93 -/ +opaque ivbinop_ : forall (v_shape : shape) (f_ : N -> iN -> iN -> iN) (v_vec_ : vec_) (v_vec__0 : vec_), (List vec_) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:58.1-58.103 -/ +opaque ivbinopsx_ : forall (v_shape : shape) (f_ : N -> sx -> iN -> iN -> iN) (v_sx : sx) (v_vec_ : vec_) (v_vec__0 : vec_), (List vec_) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:59.1-59.106 -/ +opaque ivbinopsxnd_ : forall (v_shape : shape) (f_ : N -> sx -> iN -> iN -> (List iN)) (v_sx : sx) (v_vec_ : vec_) (v_vec__0 : vec_), (List vec_) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:60.1-60.94 -/ +opaque fvbinop_ : forall (v_shape : shape) (f_ : N -> fN -> fN -> (List fN)) (v_vec_ : vec_) (v_vec__0 : vec_), (List vec_) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:62.1-62.116 -/ +opaque ivternopnd_ : forall (v_shape : shape) (f_ : N -> iN -> iN -> iN -> (List iN)) (v_vec_ : vec_) (v_vec__0 : vec_) (v_vec__1 : vec_), (List vec_) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:63.1-63.114 -/ +opaque fvternop_ : forall (v_shape : shape) (f_ : N -> fN -> fN -> fN -> (List fN)) (v_vec_ : vec_) (v_vec__0 : vec_) (v_vec__1 : vec_), (List vec_) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:65.1-65.90 -/ +opaque ivrelop_ : forall (v_shape : shape) (f_ : N -> iN -> iN -> u32) (v_vec_ : vec_) (v_vec__0 : vec_), vec_ := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:66.1-66.100 -/ +opaque ivrelopsx_ : forall (v_shape : shape) (f_ : N -> sx -> iN -> iN -> u32) (v_sx : sx) (v_vec_ : vec_) (v_vec__0 : vec_), vec_ := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:67.1-67.90 -/ +opaque fvrelop_ : forall (v_shape : shape) (f_ : N -> fN -> fN -> u32) (v_vec_ : vec_) (v_vec__0 : vec_), vec_ := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:69.1-69.85 -/ +opaque ivshiftop_ : forall (v_shape : shape) (f_ : N -> iN -> u32 -> iN) (v_vec_ : vec_) (v_u32 : u32), vec_ := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:70.1-70.95 -/ +opaque ivshiftopsx_ : forall (v_shape : shape) (f_ : N -> sx -> iN -> u32 -> iN) (v_sx : sx) (v_vec_ : vec_) (v_u32 : u32), vec_ := opaqueDef + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:72.6-72.19 -/ +inductive fun_ivbitmaskop_ : shape -> vec_ -> u32 -> Prop where + | fun_ivbitmaskop__case_0 : forall (v_M : Nat) (v_1 : uN) (c : uN) (c_1_lst : (List lane_)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim v_M))) c_1)) c_1_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) v_1)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + ((ibits_ 32 c) == ((List.map (fun (c_1 : lane_) => (.mk_bit (proj_uN_0 (ilt_ (lsizenn (lanetype_Jnn .I32)) .S (Option.get! (proj_lane__2 c_1)) (.mk_uN 0))))) c_1_lst) ++ (List.replicate (((32 : Nat) - (v_M : Nat)) : Nat) (.mk_bit 0)))) -> + fun_ivbitmaskop_ (.X .I32 (.mk_dim v_M)) v_1 (irev_ 32 c) + | fun_ivbitmaskop__case_1 : forall (v_M : Nat) (v_1 : uN) (c : uN) (c_1_lst : (List lane_)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim v_M))) c_1)) c_1_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) v_1)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + ((ibits_ 32 c) == ((List.map (fun (c_1 : lane_) => (.mk_bit (proj_uN_0 (ilt_ (lsizenn (lanetype_Jnn .I64)) .S (Option.get! (proj_lane__2 c_1)) (.mk_uN 0))))) c_1_lst) ++ (List.replicate (((32 : Nat) - (v_M : Nat)) : Nat) (.mk_bit 0)))) -> + fun_ivbitmaskop_ (.X .I64 (.mk_dim v_M)) v_1 (irev_ 32 c) + | fun_ivbitmaskop__case_2 : forall (v_M : Nat) (v_1 : uN) (c : uN) (c_1_lst : (List lane_)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim v_M))) c_1)) c_1_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) v_1)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + ((ibits_ 32 c) == ((List.map (fun (c_1 : lane_) => (.mk_bit (proj_uN_0 (ilt_ (lsizenn (lanetype_Jnn .I8)) .S (Option.get! (proj_lane__2 c_1)) (.mk_uN 0))))) c_1_lst) ++ (List.replicate (((32 : Nat) - (v_M : Nat)) : Nat) (.mk_bit 0)))) -> + fun_ivbitmaskop_ (.X .I8 (.mk_dim v_M)) v_1 (irev_ 32 c) + | fun_ivbitmaskop__case_3 : forall (v_M : Nat) (v_1 : uN) (c : uN) (c_1_lst : (List lane_)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim v_M))) c_1)) c_1_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) v_1)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + ((ibits_ 32 c) == ((List.map (fun (c_1 : lane_) => (.mk_bit (proj_uN_0 (ilt_ (lsizenn (lanetype_Jnn .I16)) .S (Option.get! (proj_lane__2 c_1)) (.mk_uN 0))))) c_1_lst) ++ (List.replicate (((32 : Nat) - (v_M : Nat)) : Nat) (.mk_bit 0)))) -> + fun_ivbitmaskop_ (.X .I16 (.mk_dim v_M)) v_1 (irev_ 32 c) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:73.1-73.96 -/ +opaque ivswizzlop_ : forall (v_shape : shape) (f_ : N -> (List iN) -> iN -> iN) (v_vec_ : vec_) (v_vec__0 : vec_), vec_ := opaqueDef + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:74.6-74.18 -/ +inductive fun_ivshufflop_ : shape -> (List laneidx) -> vec_ -> vec_ -> vec_ -> Prop where + | fun_ivshufflop__case_0 : forall (v_M : Nat) (i_lst : (List laneidx)) (v_1 : uN) (v_2 : uN) (c_lst : (List lane_)) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)), + Forall (fun (c : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim v_M))) c)) c_lst -> + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim v_M))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim v_M))) c_2)) c_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) v_2)) -> + Forall (fun (i : laneidx) => ((proj_uN_0 i) < (List.length (c_1_lst ++ c_2_lst)))) i_lst -> + (c_lst == (List.map (fun (i : laneidx) => ((c_1_lst ++ c_2_lst)[(proj_uN_0 i)]!)) i_lst)) -> + fun_ivshufflop_ (.X .I32 (.mk_dim v_M)) i_lst v_1 v_2 (inv_lanes_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) c_lst) + | fun_ivshufflop__case_1 : forall (v_M : Nat) (i_lst : (List laneidx)) (v_1 : uN) (v_2 : uN) (c_lst : (List lane_)) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)), + Forall (fun (c : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim v_M))) c)) c_lst -> + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim v_M))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim v_M))) c_2)) c_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) v_2)) -> + Forall (fun (i : laneidx) => ((proj_uN_0 i) < (List.length (c_1_lst ++ c_2_lst)))) i_lst -> + (c_lst == (List.map (fun (i : laneidx) => ((c_1_lst ++ c_2_lst)[(proj_uN_0 i)]!)) i_lst)) -> + fun_ivshufflop_ (.X .I64 (.mk_dim v_M)) i_lst v_1 v_2 (inv_lanes_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) c_lst) + | fun_ivshufflop__case_2 : forall (v_M : Nat) (i_lst : (List laneidx)) (v_1 : uN) (v_2 : uN) (c_lst : (List lane_)) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)), + Forall (fun (c : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim v_M))) c)) c_lst -> + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim v_M))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim v_M))) c_2)) c_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) v_2)) -> + Forall (fun (i : laneidx) => ((proj_uN_0 i) < (List.length (c_1_lst ++ c_2_lst)))) i_lst -> + (c_lst == (List.map (fun (i : laneidx) => ((c_1_lst ++ c_2_lst)[(proj_uN_0 i)]!)) i_lst)) -> + fun_ivshufflop_ (.X .I8 (.mk_dim v_M)) i_lst v_1 v_2 (inv_lanes_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) c_lst) + | fun_ivshufflop__case_3 : forall (v_M : Nat) (i_lst : (List laneidx)) (v_1 : uN) (v_2 : uN) (c_lst : (List lane_)) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)), + Forall (fun (c : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim v_M))) c)) c_lst -> + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim v_M))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim v_M))) c_2)) c_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) v_2)) -> + Forall (fun (i : laneidx) => ((proj_uN_0 i) < (List.length (c_1_lst ++ c_2_lst)))) i_lst -> + (c_lst == (List.map (fun (i : laneidx) => ((c_1_lst ++ c_2_lst)[(proj_uN_0 i)]!)) i_lst)) -> + fun_ivshufflop_ (.X .I16 (.mk_dim v_M)) i_lst v_1 v_2 (inv_lanes_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) c_lst) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:165.1-166.28 -/ +def vvunop_ : ∀ (v_vectype : vectype) (v_vvunop : vvunop) (v_vec_ : vec_) , (List vec_) + | v_Vnn, .NOT, v => + [(inot_ (vsizenn v_Vnn) v)] + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:167.1-168.31 -/ +def vvbinop_ : ∀ (v_vectype : vectype) (v_vvbinop : vvbinop) (v_vec_ : vec_) (v_vec__0 : vec_) , (List vec_) + | v_Vnn, .AND, v_1, v_2 => + [(iand_ (vsizenn v_Vnn) v_1 v_2)] + | v_Vnn, .ANDNOT, v_1, v_2 => + [(iandnot_ (vsizenn v_Vnn) v_1 v_2)] + | v_Vnn, .OR, v_1, v_2 => + [(ior_ (vsizenn v_Vnn) v_1 v_2)] + | v_Vnn, .XOR, v_1, v_2 => + [(ixor_ (vsizenn v_Vnn) v_1 v_2)] + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:169.1-170.34 -/ +def vvternop_ : ∀ (v_vectype : vectype) (v_vvternop : vvternop) (v_vec_ : vec_) (v_vec__0 : vec_) (v_vec__1 : vec_) , (List vec_) + | v_Vnn, .BITSELECT, v_1, v_2, v_3 => + [(ibitselect_ (vsizenn v_Vnn) v_1 v_2 v_3)] + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:172.6-172.13 -/ +inductive fun_vunop_ : shape -> vunop_ -> vec_ -> (List vec_) -> Prop where + | fun_vunop__case_0 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F32 (.mk_dim v_M)) (.mk_vunop__1 .F32 v_M .ABS) v (fvunop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fabs_ v) + | fun_vunop__case_1 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F64 (.mk_dim v_M)) (.mk_vunop__1 .F64 v_M .ABS) v (fvunop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fabs_ v) + | fun_vunop__case_2 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F32 (.mk_dim v_M)) (.mk_vunop__1 .F32 v_M .NEG) v (fvunop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fneg_ v) + | fun_vunop__case_3 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F64 (.mk_dim v_M)) (.mk_vunop__1 .F64 v_M .NEG) v (fvunop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fneg_ v) + | fun_vunop__case_4 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F32 (.mk_dim v_M)) (.mk_vunop__1 .F32 v_M .SQRT) v (fvunop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fsqrt_ v) + | fun_vunop__case_5 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F64 (.mk_dim v_M)) (.mk_vunop__1 .F64 v_M .SQRT) v (fvunop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fsqrt_ v) + | fun_vunop__case_6 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F32 (.mk_dim v_M)) (.mk_vunop__1 .F32 v_M .CEIL) v (fvunop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fceil_ v) + | fun_vunop__case_7 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F64 (.mk_dim v_M)) (.mk_vunop__1 .F64 v_M .CEIL) v (fvunop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fceil_ v) + | fun_vunop__case_8 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F32 (.mk_dim v_M)) (.mk_vunop__1 .F32 v_M .FLOOR) v (fvunop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) ffloor_ v) + | fun_vunop__case_9 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F64 (.mk_dim v_M)) (.mk_vunop__1 .F64 v_M .FLOOR) v (fvunop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) ffloor_ v) + | fun_vunop__case_10 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F32 (.mk_dim v_M)) (.mk_vunop__1 .F32 v_M .TRUNC) v (fvunop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) ftrunc_ v) + | fun_vunop__case_11 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F64 (.mk_dim v_M)) (.mk_vunop__1 .F64 v_M .TRUNC) v (fvunop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) ftrunc_ v) + | fun_vunop__case_12 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F32 (.mk_dim v_M)) (.mk_vunop__1 .F32 v_M .NEAREST) v (fvunop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fnearest_ v) + | fun_vunop__case_13 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .F64 (.mk_dim v_M)) (.mk_vunop__1 .F64 v_M .NEAREST) v (fvunop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fnearest_ v) + | fun_vunop__case_14 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I32 (.mk_dim v_M)) (.mk_vunop__0 .I32 v_M .ABS) v (ivunop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) iabs_ v) + | fun_vunop__case_15 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I64 (.mk_dim v_M)) (.mk_vunop__0 .I64 v_M .ABS) v (ivunop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) iabs_ v) + | fun_vunop__case_16 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I8 (.mk_dim v_M)) (.mk_vunop__0 .I8 v_M .ABS) v (ivunop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) iabs_ v) + | fun_vunop__case_17 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I16 (.mk_dim v_M)) (.mk_vunop__0 .I16 v_M .ABS) v (ivunop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) iabs_ v) + | fun_vunop__case_18 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I32 (.mk_dim v_M)) (.mk_vunop__0 .I32 v_M .NEG) v (ivunop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ineg_ v) + | fun_vunop__case_19 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I64 (.mk_dim v_M)) (.mk_vunop__0 .I64 v_M .NEG) v (ivunop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ineg_ v) + | fun_vunop__case_20 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I8 (.mk_dim v_M)) (.mk_vunop__0 .I8 v_M .NEG) v (ivunop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ineg_ v) + | fun_vunop__case_21 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I16 (.mk_dim v_M)) (.mk_vunop__0 .I16 v_M .NEG) v (ivunop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ineg_ v) + | fun_vunop__case_22 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I32 (.mk_dim v_M)) (.mk_vunop__0 .I32 v_M .POPCNT) v (ivunop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ipopcnt_ v) + | fun_vunop__case_23 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I64 (.mk_dim v_M)) (.mk_vunop__0 .I64 v_M .POPCNT) v (ivunop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ipopcnt_ v) + | fun_vunop__case_24 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I8 (.mk_dim v_M)) (.mk_vunop__0 .I8 v_M .POPCNT) v (ivunop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ipopcnt_ v) + | fun_vunop__case_25 : forall (v_M : Nat) (v : uN), fun_vunop_ (.X .I16 (.mk_dim v_M)) (.mk_vunop__0 .I16 v_M .POPCNT) v (ivunop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ipopcnt_ v) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:174.6-174.14 -/ +inductive fun_vbinop_ : shape -> vbinop_ -> vec_ -> vec_ -> (List vec_) -> Prop where + | fun_vbinop__case_0 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M .ADD) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) iadd_ v_1 v_2) + | fun_vbinop__case_1 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M .ADD) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) iadd_ v_1 v_2) + | fun_vbinop__case_2 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M .ADD) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) iadd_ v_1 v_2) + | fun_vbinop__case_3 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M .ADD) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) iadd_ v_1 v_2) + | fun_vbinop__case_4 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M .SUB) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) isub_ v_1 v_2) + | fun_vbinop__case_5 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M .SUB) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) isub_ v_1 v_2) + | fun_vbinop__case_6 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M .SUB) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) isub_ v_1 v_2) + | fun_vbinop__case_7 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M .SUB) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) isub_ v_1 v_2) + | fun_vbinop__case_8 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M .MUL) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) imul_ v_1 v_2) + | fun_vbinop__case_9 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M .MUL) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) imul_ v_1 v_2) + | fun_vbinop__case_10 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M .MUL) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) imul_ v_1 v_2) + | fun_vbinop__case_11 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M .MUL) v_1 v_2 (ivbinop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) imul_ v_1 v_2) + | fun_vbinop__case_12 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M (.ADD_SAT v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) iadd_sat_ v_sx v_1 v_2) + | fun_vbinop__case_13 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M (.ADD_SAT v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) iadd_sat_ v_sx v_1 v_2) + | fun_vbinop__case_14 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M (.ADD_SAT v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) iadd_sat_ v_sx v_1 v_2) + | fun_vbinop__case_15 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M (.ADD_SAT v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) iadd_sat_ v_sx v_1 v_2) + | fun_vbinop__case_16 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M (.SUB_SAT v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) isub_sat_ v_sx v_1 v_2) + | fun_vbinop__case_17 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M (.SUB_SAT v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) isub_sat_ v_sx v_1 v_2) + | fun_vbinop__case_18 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M (.SUB_SAT v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) isub_sat_ v_sx v_1 v_2) + | fun_vbinop__case_19 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M (.SUB_SAT v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) isub_sat_ v_sx v_1 v_2) + | fun_vbinop__case_20 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M (.MIN v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) imin_ v_sx v_1 v_2) + | fun_vbinop__case_21 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M (.MIN v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) imin_ v_sx v_1 v_2) + | fun_vbinop__case_22 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M (.MIN v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) imin_ v_sx v_1 v_2) + | fun_vbinop__case_23 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M (.MIN v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) imin_ v_sx v_1 v_2) + | fun_vbinop__case_24 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M (.MAX v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) imax_ v_sx v_1 v_2) + | fun_vbinop__case_25 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M (.MAX v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) imax_ v_sx v_1 v_2) + | fun_vbinop__case_26 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M (.MAX v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) imax_ v_sx v_1 v_2) + | fun_vbinop__case_27 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M (.MAX v_sx)) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) imax_ v_sx v_1 v_2) + | fun_vbinop__case_28 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M .AVGRU) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) iavgr_ .U v_1 v_2) + | fun_vbinop__case_29 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M .AVGRU) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) iavgr_ .U v_1 v_2) + | fun_vbinop__case_30 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M .AVGRU) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) iavgr_ .U v_1 v_2) + | fun_vbinop__case_31 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M .AVGRU) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) iavgr_ .U v_1 v_2) + | fun_vbinop__case_32 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M .Q15MULR_SATS) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) iq15mulr_sat_ .S v_1 v_2) + | fun_vbinop__case_33 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M .Q15MULR_SATS) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) iq15mulr_sat_ .S v_1 v_2) + | fun_vbinop__case_34 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M .Q15MULR_SATS) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) iq15mulr_sat_ .S v_1 v_2) + | fun_vbinop__case_35 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M .Q15MULR_SATS) v_1 v_2 (ivbinopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) iq15mulr_sat_ .S v_1 v_2) + | fun_vbinop__case_36 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I32 (.mk_dim v_M)) (.mk_vbinop__0 .I32 v_M .RELAXED_Q15MULRS) v_1 v_2 (ivbinopsxnd_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) irelaxed_q15mulr_ .S v_1 v_2) + | fun_vbinop__case_37 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I64 (.mk_dim v_M)) (.mk_vbinop__0 .I64 v_M .RELAXED_Q15MULRS) v_1 v_2 (ivbinopsxnd_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) irelaxed_q15mulr_ .S v_1 v_2) + | fun_vbinop__case_38 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I8 (.mk_dim v_M)) (.mk_vbinop__0 .I8 v_M .RELAXED_Q15MULRS) v_1 v_2 (ivbinopsxnd_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) irelaxed_q15mulr_ .S v_1 v_2) + | fun_vbinop__case_39 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .I16 (.mk_dim v_M)) (.mk_vbinop__0 .I16 v_M .RELAXED_Q15MULRS) v_1 v_2 (ivbinopsxnd_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) irelaxed_q15mulr_ .S v_1 v_2) + | fun_vbinop__case_40 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .ADD) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fadd_ v_1 v_2) + | fun_vbinop__case_41 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .ADD) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fadd_ v_1 v_2) + | fun_vbinop__case_42 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .SUB) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fsub_ v_1 v_2) + | fun_vbinop__case_43 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .SUB) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fsub_ v_1 v_2) + | fun_vbinop__case_44 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .MUL) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fmul_ v_1 v_2) + | fun_vbinop__case_45 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .MUL) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fmul_ v_1 v_2) + | fun_vbinop__case_46 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .DIV) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fdiv_ v_1 v_2) + | fun_vbinop__case_47 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .DIV) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fdiv_ v_1 v_2) + | fun_vbinop__case_48 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .MIN) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fmin_ v_1 v_2) + | fun_vbinop__case_49 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .MIN) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fmin_ v_1 v_2) + | fun_vbinop__case_50 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .MAX) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fmax_ v_1 v_2) + | fun_vbinop__case_51 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .MAX) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fmax_ v_1 v_2) + | fun_vbinop__case_52 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .PMIN) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fpmin_ v_1 v_2) + | fun_vbinop__case_53 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .PMIN) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fpmin_ v_1 v_2) + | fun_vbinop__case_54 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .PMAX) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fpmax_ v_1 v_2) + | fun_vbinop__case_55 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .PMAX) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fpmax_ v_1 v_2) + | fun_vbinop__case_56 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .RELAXED_MIN) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) frelaxed_min_ v_1 v_2) + | fun_vbinop__case_57 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .RELAXED_MIN) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) frelaxed_min_ v_1 v_2) + | fun_vbinop__case_58 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F32 (.mk_dim v_M)) (.mk_vbinop__1 .F32 v_M .RELAXED_MAX) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) frelaxed_max_ v_1 v_2) + | fun_vbinop__case_59 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vbinop_ (.X .F64 (.mk_dim v_M)) (.mk_vbinop__1 .F64 v_M .RELAXED_MAX) v_1 v_2 (fvbinop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) frelaxed_max_ v_1 v_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:176.6-176.15 -/ +inductive fun_vternop_ : shape -> vternop_ -> vec_ -> vec_ -> vec_ -> (List vec_) -> Prop where + | fun_vternop__case_0 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN) (v_3 : uN), fun_vternop_ (.X .I32 (.mk_dim v_M)) (.mk_vternop__0 .I32 v_M .RELAXED_LANESELECT) v_1 v_2 v_3 (ivternopnd_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) irelaxed_laneselect_ v_1 v_2 v_3) + | fun_vternop__case_1 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN) (v_3 : uN), fun_vternop_ (.X .I64 (.mk_dim v_M)) (.mk_vternop__0 .I64 v_M .RELAXED_LANESELECT) v_1 v_2 v_3 (ivternopnd_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) irelaxed_laneselect_ v_1 v_2 v_3) + | fun_vternop__case_2 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN) (v_3 : uN), fun_vternop_ (.X .I8 (.mk_dim v_M)) (.mk_vternop__0 .I8 v_M .RELAXED_LANESELECT) v_1 v_2 v_3 (ivternopnd_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) irelaxed_laneselect_ v_1 v_2 v_3) + | fun_vternop__case_3 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN) (v_3 : uN), fun_vternop_ (.X .I16 (.mk_dim v_M)) (.mk_vternop__0 .I16 v_M .RELAXED_LANESELECT) v_1 v_2 v_3 (ivternopnd_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) irelaxed_laneselect_ v_1 v_2 v_3) + | fun_vternop__case_4 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN) (v_3 : uN), fun_vternop_ (.X .F32 (.mk_dim v_M)) (.mk_vternop__1 .F32 v_M .RELAXED_MADD) v_1 v_2 v_3 (fvternop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) frelaxed_madd_ v_1 v_2 v_3) + | fun_vternop__case_5 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN) (v_3 : uN), fun_vternop_ (.X .F64 (.mk_dim v_M)) (.mk_vternop__1 .F64 v_M .RELAXED_MADD) v_1 v_2 v_3 (fvternop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) frelaxed_madd_ v_1 v_2 v_3) + | fun_vternop__case_6 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN) (v_3 : uN), fun_vternop_ (.X .F32 (.mk_dim v_M)) (.mk_vternop__1 .F32 v_M .RELAXED_NMADD) v_1 v_2 v_3 (fvternop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) frelaxed_nmadd_ v_1 v_2 v_3) + | fun_vternop__case_7 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN) (v_3 : uN), fun_vternop_ (.X .F64 (.mk_dim v_M)) (.mk_vternop__1 .F64 v_M .RELAXED_NMADD) v_1 v_2 v_3 (fvternop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) frelaxed_nmadd_ v_1 v_2 v_3) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:178.6-178.14 -/ +inductive fun_vrelop_ : shape -> vrelop_ -> vec_ -> vec_ -> vec_ -> Prop where + | fun_vrelop__case_0 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I32 (.mk_dim v_M)) (.mk_vrelop__0 .I32 v_M .EQ) v_1 v_2 (ivrelop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ieq_ v_1 v_2) + | fun_vrelop__case_1 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I64 (.mk_dim v_M)) (.mk_vrelop__0 .I64 v_M .EQ) v_1 v_2 (ivrelop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ieq_ v_1 v_2) + | fun_vrelop__case_2 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I8 (.mk_dim v_M)) (.mk_vrelop__0 .I8 v_M .EQ) v_1 v_2 (ivrelop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ieq_ v_1 v_2) + | fun_vrelop__case_3 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I16 (.mk_dim v_M)) (.mk_vrelop__0 .I16 v_M .EQ) v_1 v_2 (ivrelop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ieq_ v_1 v_2) + | fun_vrelop__case_4 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I32 (.mk_dim v_M)) (.mk_vrelop__0 .I32 v_M .NE) v_1 v_2 (ivrelop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ine_ v_1 v_2) + | fun_vrelop__case_5 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I64 (.mk_dim v_M)) (.mk_vrelop__0 .I64 v_M .NE) v_1 v_2 (ivrelop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ine_ v_1 v_2) + | fun_vrelop__case_6 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I8 (.mk_dim v_M)) (.mk_vrelop__0 .I8 v_M .NE) v_1 v_2 (ivrelop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ine_ v_1 v_2) + | fun_vrelop__case_7 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I16 (.mk_dim v_M)) (.mk_vrelop__0 .I16 v_M .NE) v_1 v_2 (ivrelop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ine_ v_1 v_2) + | fun_vrelop__case_8 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I32 (.mk_dim v_M)) (.mk_vrelop__0 .I32 v_M (.LT v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ilt_ v_sx v_1 v_2) + | fun_vrelop__case_9 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I64 (.mk_dim v_M)) (.mk_vrelop__0 .I64 v_M (.LT v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ilt_ v_sx v_1 v_2) + | fun_vrelop__case_10 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I8 (.mk_dim v_M)) (.mk_vrelop__0 .I8 v_M (.LT v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ilt_ v_sx v_1 v_2) + | fun_vrelop__case_11 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I16 (.mk_dim v_M)) (.mk_vrelop__0 .I16 v_M (.LT v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ilt_ v_sx v_1 v_2) + | fun_vrelop__case_12 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I32 (.mk_dim v_M)) (.mk_vrelop__0 .I32 v_M (.GT v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) igt_ v_sx v_1 v_2) + | fun_vrelop__case_13 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I64 (.mk_dim v_M)) (.mk_vrelop__0 .I64 v_M (.GT v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) igt_ v_sx v_1 v_2) + | fun_vrelop__case_14 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I8 (.mk_dim v_M)) (.mk_vrelop__0 .I8 v_M (.GT v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) igt_ v_sx v_1 v_2) + | fun_vrelop__case_15 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I16 (.mk_dim v_M)) (.mk_vrelop__0 .I16 v_M (.GT v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) igt_ v_sx v_1 v_2) + | fun_vrelop__case_16 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I32 (.mk_dim v_M)) (.mk_vrelop__0 .I32 v_M (.LE v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ile_ v_sx v_1 v_2) + | fun_vrelop__case_17 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I64 (.mk_dim v_M)) (.mk_vrelop__0 .I64 v_M (.LE v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ile_ v_sx v_1 v_2) + | fun_vrelop__case_18 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I8 (.mk_dim v_M)) (.mk_vrelop__0 .I8 v_M (.LE v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ile_ v_sx v_1 v_2) + | fun_vrelop__case_19 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I16 (.mk_dim v_M)) (.mk_vrelop__0 .I16 v_M (.LE v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ile_ v_sx v_1 v_2) + | fun_vrelop__case_20 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I32 (.mk_dim v_M)) (.mk_vrelop__0 .I32 v_M (.GE v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ige_ v_sx v_1 v_2) + | fun_vrelop__case_21 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I64 (.mk_dim v_M)) (.mk_vrelop__0 .I64 v_M (.GE v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ige_ v_sx v_1 v_2) + | fun_vrelop__case_22 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I8 (.mk_dim v_M)) (.mk_vrelop__0 .I8 v_M (.GE v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ige_ v_sx v_1 v_2) + | fun_vrelop__case_23 : forall (v_M : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .I16 (.mk_dim v_M)) (.mk_vrelop__0 .I16 v_M (.GE v_sx)) v_1 v_2 (ivrelopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ige_ v_sx v_1 v_2) + | fun_vrelop__case_24 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F32 (.mk_dim v_M)) (.mk_vrelop__1 .F32 v_M .EQ) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) feq_ v_1 v_2) + | fun_vrelop__case_25 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F64 (.mk_dim v_M)) (.mk_vrelop__1 .F64 v_M .EQ) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) feq_ v_1 v_2) + | fun_vrelop__case_26 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F32 (.mk_dim v_M)) (.mk_vrelop__1 .F32 v_M .NE) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fne_ v_1 v_2) + | fun_vrelop__case_27 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F64 (.mk_dim v_M)) (.mk_vrelop__1 .F64 v_M .NE) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fne_ v_1 v_2) + | fun_vrelop__case_28 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F32 (.mk_dim v_M)) (.mk_vrelop__1 .F32 v_M .LT) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) flt_ v_1 v_2) + | fun_vrelop__case_29 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F64 (.mk_dim v_M)) (.mk_vrelop__1 .F64 v_M .LT) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) flt_ v_1 v_2) + | fun_vrelop__case_30 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F32 (.mk_dim v_M)) (.mk_vrelop__1 .F32 v_M .GT) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fgt_ v_1 v_2) + | fun_vrelop__case_31 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F64 (.mk_dim v_M)) (.mk_vrelop__1 .F64 v_M .GT) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fgt_ v_1 v_2) + | fun_vrelop__case_32 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F32 (.mk_dim v_M)) (.mk_vrelop__1 .F32 v_M .LE) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fle_ v_1 v_2) + | fun_vrelop__case_33 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F64 (.mk_dim v_M)) (.mk_vrelop__1 .F64 v_M .LE) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fle_ v_1 v_2) + | fun_vrelop__case_34 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F32 (.mk_dim v_M)) (.mk_vrelop__1 .F32 v_M .GE) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F32) (.mk_dim v_M)) fge_ v_1 v_2) + | fun_vrelop__case_35 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vrelop_ (.X .F64 (.mk_dim v_M)) (.mk_vrelop__1 .F64 v_M .GE) v_1 v_2 (fvrelop_ (.X (lanetype_Fnn .F64) (.mk_dim v_M)) fge_ v_1 v_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:181.6-181.15 -/ +inductive fun_lcvtop__ : shape -> shape -> vcvtop__ -> lane_ -> (List lane_) -> Prop where + | fun_lcvtop___case_0 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I32)) (lsizenn2 (lanetype_Jnn .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .I32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I32 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I32 c_1) [(.mk_lane__2 .I32 c)] + | fun_lcvtop___case_1 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I64)) (lsizenn2 (lanetype_Jnn .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .I64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I32 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I64 c_1) [(.mk_lane__2 .I32 c)] + | fun_lcvtop___case_2 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I8)) (lsizenn2 (lanetype_Jnn .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .I8 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I32 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I8 c_1) [(.mk_lane__2 .I32 c)] + | fun_lcvtop___case_3 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I16)) (lsizenn2 (lanetype_Jnn .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .I16 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I32 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I16 c_1) [(.mk_lane__2 .I32 c)] + | fun_lcvtop___case_4 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I32)) (lsizenn2 (lanetype_Jnn .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .I32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I64 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I32 c_1) [(.mk_lane__2 .I64 c)] + | fun_lcvtop___case_5 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I64)) (lsizenn2 (lanetype_Jnn .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .I64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I64 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I64 c_1) [(.mk_lane__2 .I64 c)] + | fun_lcvtop___case_6 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I8)) (lsizenn2 (lanetype_Jnn .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .I8 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I64 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I8 c_1) [(.mk_lane__2 .I64 c)] + | fun_lcvtop___case_7 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I16)) (lsizenn2 (lanetype_Jnn .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .I16 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I64 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I16 c_1) [(.mk_lane__2 .I64 c)] + | fun_lcvtop___case_8 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I32)) (lsizenn2 (lanetype_Jnn .I8)) v_sx c_1)) -> + fun_lcvtop__ (.X .I32 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I8 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I32 c_1) [(.mk_lane__2 .I8 c)] + | fun_lcvtop___case_9 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I64)) (lsizenn2 (lanetype_Jnn .I8)) v_sx c_1)) -> + fun_lcvtop__ (.X .I64 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I8 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I64 c_1) [(.mk_lane__2 .I8 c)] + | fun_lcvtop___case_10 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I8)) (lsizenn2 (lanetype_Jnn .I8)) v_sx c_1)) -> + fun_lcvtop__ (.X .I8 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I8 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I8 c_1) [(.mk_lane__2 .I8 c)] + | fun_lcvtop___case_11 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I16)) (lsizenn2 (lanetype_Jnn .I8)) v_sx c_1)) -> + fun_lcvtop__ (.X .I16 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I8 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I16 c_1) [(.mk_lane__2 .I8 c)] + | fun_lcvtop___case_12 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I32)) (lsizenn2 (lanetype_Jnn .I16)) v_sx c_1)) -> + fun_lcvtop__ (.X .I32 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I32 M_1 .I16 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I32 c_1) [(.mk_lane__2 .I16 c)] + | fun_lcvtop___case_13 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I64)) (lsizenn2 (lanetype_Jnn .I16)) v_sx c_1)) -> + fun_lcvtop__ (.X .I64 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I64 M_1 .I16 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I64 c_1) [(.mk_lane__2 .I16 c)] + | fun_lcvtop___case_14 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I8)) (lsizenn2 (lanetype_Jnn .I16)) v_sx c_1)) -> + fun_lcvtop__ (.X .I8 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I8 M_1 .I16 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I8 c_1) [(.mk_lane__2 .I16 c)] + | fun_lcvtop___case_15 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (c_1 : uN) (c : uN), + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c)) -> + (c == (extend__ (lsizenn1 (lanetype_Jnn .I16)) (lsizenn2 (lanetype_Jnn .I16)) v_sx c_1)) -> + fun_lcvtop__ (.X .I16 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) (.mk_vcvtop___0 .I16 M_1 .I16 M_2 (.EXTEND v_half v_sx)) (.mk_lane__2 .I16 c_1) [(.mk_lane__2 .I16 c)] + | fun_lcvtop___case_16 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx) (c_1 : uN) (c : fN), + (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) -> + (c == (convert__ (lsizenn1 (lanetype_Jnn .I32)) (lsizenn2 (lanetype_Fnn .F32)) v_sx c_1)) -> + fun_lcvtop__ (.X .I32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I32 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) (.mk_lane__2 .I32 c_1) [(.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))] + | fun_lcvtop___case_17 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx) (c_1 : uN) (c : fN), + (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) -> + (c == (convert__ (lsizenn1 (lanetype_Jnn .I64)) (lsizenn2 (lanetype_Fnn .F32)) v_sx c_1)) -> + fun_lcvtop__ (.X .I64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I64 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) (.mk_lane__2 .I64 c_1) [(.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))] + | fun_lcvtop___case_18 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx) (c_1 : uN) (c : fN), + (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) -> + (c == (convert__ (lsizenn1 (lanetype_Jnn .I8)) (lsizenn2 (lanetype_Fnn .F32)) v_sx c_1)) -> + fun_lcvtop__ (.X .I8 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I8 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) (.mk_lane__2 .I8 c_1) [(.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))] + | fun_lcvtop___case_19 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx) (c_1 : uN) (c : fN), + (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) -> + (c == (convert__ (lsizenn1 (lanetype_Jnn .I16)) (lsizenn2 (lanetype_Fnn .F32)) v_sx c_1)) -> + fun_lcvtop__ (.X .I16 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___1 .I16 M_1 .F32 M_2 (.CONVERT half_opt v_sx)) (.mk_lane__2 .I16 c_1) [(.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))] + | fun_lcvtop___case_20 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx) (c_1 : uN) (c : fN), + (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) -> + (c == (convert__ (lsizenn1 (lanetype_Jnn .I32)) (lsizenn2 (lanetype_Fnn .F64)) v_sx c_1)) -> + fun_lcvtop__ (.X .I32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I32 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) (.mk_lane__2 .I32 c_1) [(.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))] + | fun_lcvtop___case_21 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx) (c_1 : uN) (c : fN), + (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) -> + (c == (convert__ (lsizenn1 (lanetype_Jnn .I64)) (lsizenn2 (lanetype_Fnn .F64)) v_sx c_1)) -> + fun_lcvtop__ (.X .I64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I64 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) (.mk_lane__2 .I64 c_1) [(.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))] + | fun_lcvtop___case_22 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx) (c_1 : uN) (c : fN), + (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) -> + (c == (convert__ (lsizenn1 (lanetype_Jnn .I8)) (lsizenn2 (lanetype_Fnn .F64)) v_sx c_1)) -> + fun_lcvtop__ (.X .I8 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I8 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) (.mk_lane__2 .I8 c_1) [(.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))] + | fun_lcvtop___case_23 : forall (M_1 : Nat) (M_2 : Nat) (half_opt : (Option half)) (v_sx : sx) (c_1 : uN) (c : fN), + (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) -> + (c == (convert__ (lsizenn1 (lanetype_Jnn .I16)) (lsizenn2 (lanetype_Fnn .F64)) v_sx c_1)) -> + fun_lcvtop__ (.X .I16 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___1 .I16 M_1 .F64 M_2 (.CONVERT half_opt v_sx)) (.mk_lane__2 .I16 c_1) [(.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))] + | fun_lcvtop___case_24 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_25 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_26 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_27 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_28 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_29 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_30 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_31 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_32 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_33 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_34 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_35 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_36 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_37 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_38 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_39 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (trunc_sat__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.TRUNC_SAT v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_40 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_41 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_42 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_43 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_44 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_45 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_46 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_47 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F32 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_48 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_49 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_50 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_51 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I32) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I32)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I32 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I32) (.mk_num__0 .I32 c))) c_opt)) + | fun_lcvtop___case_52 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_53 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_54 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_55 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (zero_opt : (Option zero)) (c_1 : fN) (c_opt : (Option iN)), + Forall (fun (c : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_addrtype .I64) (.mk_dim M_2))) (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c)))) (Option.toList c_opt) -> + (c_opt == (relaxed_trunc__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_addrtype .I64)) v_sx c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) (.mk_vcvtop___2 .F64 M_1 .I64 M_2 (.RELAXED_TRUNC v_sx zero_opt)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (Option.toList (Option.map (fun (c : iN) => (.mk_lane__0 (numtype_addrtype .I64) (.mk_num__0 .I64 c))) c_opt)) + | fun_lcvtop___case_56 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c)))) c_lst -> + (c_lst == (demote__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_Fnn .F32)) c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F32 M_2 (.DEMOTE .ZERO)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) c_lst) + | fun_lcvtop___case_57 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c)))) c_lst -> + (c_lst == (demote__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_Fnn .F32)) c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F32 M_2 (.DEMOTE .ZERO)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) c_lst) + | fun_lcvtop___case_58 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c)))) c_lst -> + (c_lst == (demote__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_Fnn .F64)) c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F64 M_2 (.DEMOTE .ZERO)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) c_lst) + | fun_lcvtop___case_59 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c)))) c_lst -> + (c_lst == (demote__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_Fnn .F64)) c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F64 M_2 (.DEMOTE .ZERO)) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) c_lst) + | fun_lcvtop___case_60 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c)))) c_lst -> + (c_lst == (demote__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_Fnn .F32)) c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F32 M_2 (.DEMOTE .ZERO)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) c_lst) + | fun_lcvtop___case_61 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c)))) c_lst -> + (c_lst == (demote__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_Fnn .F32)) c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F32 M_2 (.DEMOTE .ZERO)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) c_lst) + | fun_lcvtop___case_62 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c)))) c_lst -> + (c_lst == (demote__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_Fnn .F64)) c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F64 M_2 (.DEMOTE .ZERO)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) c_lst) + | fun_lcvtop___case_63 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c)))) c_lst -> + (c_lst == (demote__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_Fnn .F64)) c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F64 M_2 (.DEMOTE .ZERO)) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) c_lst) + | fun_lcvtop___case_64 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c)))) c_lst -> + (c_lst == (promote__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_Fnn .F32)) c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F32 M_2 .PROMOTELOW) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) c_lst) + | fun_lcvtop___case_65 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c)))) c_lst -> + (c_lst == (promote__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_Fnn .F32)) c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F32 M_2 .PROMOTELOW) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) c_lst) + | fun_lcvtop___case_66 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c)))) c_lst -> + (c_lst == (promote__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_Fnn .F64)) c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F64 M_2 .PROMOTELOW) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) c_lst) + | fun_lcvtop___case_67 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c)))) c_lst -> + (c_lst == (promote__ (lsizenn1 (lanetype_Fnn .F32)) (lsizenn2 (lanetype_Fnn .F64)) c_1)) -> + fun_lcvtop__ (.X .F32 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F32 M_1 .F64 M_2 .PROMOTELOW) (.mk_lane__0 .F32 (.mk_num__1 .F32 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) c_lst) + | fun_lcvtop___case_68 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c)))) c_lst -> + (c_lst == (promote__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_Fnn .F32)) c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F32 M_2 .PROMOTELOW) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) c_lst) + | fun_lcvtop___case_69 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F32) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c)))) c_lst -> + (c_lst == (promote__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_Fnn .F32)) c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .F32 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F32 M_2 .PROMOTELOW) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F32) (.mk_num__1 .F32 c))) c_lst) + | fun_lcvtop___case_70 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c)))) c_lst -> + (c_lst == (promote__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_Fnn .F64)) c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F64 M_2 .PROMOTELOW) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) c_lst) + | fun_lcvtop___case_71 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : fN) (c_lst : (List fN)), + Forall (fun (c : fN) => (wf_lane_ (fun_lanetype (.X (lanetype_Fnn .F64) (.mk_dim M_2))) (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c)))) c_lst -> + (c_lst == (promote__ (lsizenn1 (lanetype_Fnn .F64)) (lsizenn2 (lanetype_Fnn .F64)) c_1)) -> + fun_lcvtop__ (.X .F64 (.mk_dim M_1)) (.X .F64 (.mk_dim M_2)) (.mk_vcvtop___3 .F64 M_1 .F64 M_2 .PROMOTELOW) (.mk_lane__0 .F64 (.mk_num__1 .F64 c_1)) (List.map (fun (c : fN) => (.mk_lane__0 (numtype_Fnn .F64) (.mk_num__1 .F64 c))) c_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:183.6-183.15 -/ +inductive fun_vcvtop__ : shape -> shape -> vcvtop__ -> vec_ -> vec_ -> Prop where + | fun_vcvtop___case_0 : forall (Lnn_1 : lanetype) (v_M : Nat) (Lnn_2 : lanetype) (vcvtop : vcvtop__) (v_1 : uN) (v : uN) (c_1_lst : (List lane_)) (c_lst_lst : (List (List lane_))) (var_2_lst : (List (List lane_))) (var_1 : (Option zero)) (var_0 : (Option half)), + ((List.length var_2_lst) == (List.length c_1_lst)) -> + Forall₂ (fun (var_2 : (List lane_)) (c_1 : lane_) => (fun_lcvtop__ (.X Lnn_1 (.mk_dim v_M)) (.X Lnn_2 (.mk_dim v_M)) vcvtop c_1 var_2)) var_2_lst c_1_lst -> + (fun_zeroop (.X Lnn_1 (.mk_dim v_M)) (.X Lnn_2 (.mk_dim v_M)) vcvtop var_1) -> + (fun_halfop (.X Lnn_1 (.mk_dim v_M)) (.X Lnn_2 (.mk_dim v_M)) vcvtop var_0) -> + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X Lnn_1 (.mk_dim v_M))) c_1)) c_1_lst -> + Forall (fun (c_lst : (List lane_)) => Forall (fun (c : lane_) => (wf_lane_ Lnn_2 c)) c_lst) c_lst_lst -> + ((var_0 == none) && (var_1 == none)) -> + (c_1_lst == (lanes_ (.X Lnn_1 (.mk_dim v_M)) v_1)) -> + (c_lst_lst == (setproduct_ lane_ var_2_lst)) -> + ((List.length (List.map (fun (c_lst : (List lane_)) => (inv_lanes_ (.X Lnn_2 (.mk_dim v_M)) c_lst)) c_lst_lst)) > 0) -> + (List.contains (List.map (fun (c_lst : (List lane_)) => (inv_lanes_ (.X Lnn_2 (.mk_dim v_M)) c_lst)) c_lst_lst) v) -> + fun_vcvtop__ (.X Lnn_1 (.mk_dim v_M)) (.X Lnn_2 (.mk_dim v_M)) vcvtop v_1 v + | fun_vcvtop___case_1 : forall (Lnn_1 : lanetype) (M_1 : Nat) (Lnn_2 : lanetype) (M_2 : Nat) (vcvtop : vcvtop__) (v_1 : uN) (v : uN) (v_half : half) (c_1_lst : (List lane_)) (c_lst_lst : (List (List lane_))) (var_1_lst : (List (List lane_))) (var_0 : (Option half)), + ((List.length var_1_lst) == (List.length c_1_lst)) -> + Forall₂ (fun (var_1 : (List lane_)) (c_1 : lane_) => (fun_lcvtop__ (.X Lnn_1 (.mk_dim M_1)) (.X Lnn_2 (.mk_dim M_2)) vcvtop c_1 var_1)) var_1_lst c_1_lst -> + (fun_halfop (.X Lnn_1 (.mk_dim M_1)) (.X Lnn_2 (.mk_dim M_2)) vcvtop var_0) -> + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X Lnn_1 (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_lst : (List lane_)) => Forall (fun (c : lane_) => (wf_lane_ Lnn_2 c)) c_lst) c_lst_lst -> + (var_0 == (some v_half)) -> + (c_1_lst == (List.extract (lanes_ (.X Lnn_1 (.mk_dim M_1)) v_1) (fun_half v_half 0 M_2) M_2)) -> + (c_lst_lst == (setproduct_ lane_ var_1_lst)) -> + ((List.length (List.map (fun (c_lst : (List lane_)) => (inv_lanes_ (.X Lnn_2 (.mk_dim M_2)) c_lst)) c_lst_lst)) > 0) -> + (List.contains (List.map (fun (c_lst : (List lane_)) => (inv_lanes_ (.X Lnn_2 (.mk_dim M_2)) c_lst)) c_lst_lst) v) -> + fun_vcvtop__ (.X Lnn_1 (.mk_dim M_1)) (.X Lnn_2 (.mk_dim M_2)) vcvtop v_1 v + | fun_vcvtop___case_2 : forall (Lnn_1 : lanetype) (M_1 : Nat) (Lnn_2 : lanetype) (M_2 : Nat) (vcvtop : vcvtop__) (v_1 : uN) (v : uN) (c_1_lst : (List lane_)) (c_lst_lst : (List (List lane_))) (var_2 : lane_) (var_1_lst : (List (List lane_))) (var_0 : (Option zero)), + (fun_zero Lnn_2 var_2) -> + ((List.length var_1_lst) == (List.length c_1_lst)) -> + Forall₂ (fun (var_1 : (List lane_)) (c_1 : lane_) => (fun_lcvtop__ (.X Lnn_1 (.mk_dim M_1)) (.X Lnn_2 (.mk_dim M_2)) vcvtop c_1 var_1)) var_1_lst c_1_lst -> + (fun_zeroop (.X Lnn_1 (.mk_dim M_1)) (.X Lnn_2 (.mk_dim M_2)) vcvtop var_0) -> + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X Lnn_1 (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_lst : (List lane_)) => Forall (fun (c : lane_) => (wf_lane_ Lnn_2 c)) c_lst) c_lst_lst -> + (var_0 == (some .ZERO)) -> + (c_1_lst == (lanes_ (.X Lnn_1 (.mk_dim M_1)) v_1)) -> + (c_lst_lst == (setproduct_ lane_ (var_1_lst ++ (List.replicate M_1 [var_2])))) -> + ((List.length (List.map (fun (c_lst : (List lane_)) => (inv_lanes_ (.X Lnn_2 (.mk_dim M_2)) c_lst)) c_lst_lst)) > 0) -> + (List.contains (List.map (fun (c_lst : (List lane_)) => (inv_lanes_ (.X Lnn_2 (.mk_dim M_2)) c_lst)) c_lst_lst) v) -> + fun_vcvtop__ (.X Lnn_1 (.mk_dim M_1)) (.X Lnn_2 (.mk_dim M_2)) vcvtop v_1 v + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:186.6-186.16 -/ +inductive fun_vshiftop_ : ishape -> vshiftop_ -> vec_ -> u32 -> vec_ -> Prop where + | fun_vshiftop__case_0 : forall (v_M : Nat) (v : uN) (i : uN), fun_vshiftop_ (.mk_ishape (.X .I32 (.mk_dim v_M))) (.mk_vshiftop__0 .I32 v_M .SHL) v i (ivshiftop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ishl_ v i) + | fun_vshiftop__case_1 : forall (v_M : Nat) (v : uN) (i : uN), fun_vshiftop_ (.mk_ishape (.X .I64 (.mk_dim v_M))) (.mk_vshiftop__0 .I64 v_M .SHL) v i (ivshiftop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ishl_ v i) + | fun_vshiftop__case_2 : forall (v_M : Nat) (v : uN) (i : uN), fun_vshiftop_ (.mk_ishape (.X .I8 (.mk_dim v_M))) (.mk_vshiftop__0 .I8 v_M .SHL) v i (ivshiftop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ishl_ v i) + | fun_vshiftop__case_3 : forall (v_M : Nat) (v : uN) (i : uN), fun_vshiftop_ (.mk_ishape (.X .I16 (.mk_dim v_M))) (.mk_vshiftop__0 .I16 v_M .SHL) v i (ivshiftop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ishl_ v i) + | fun_vshiftop__case_4 : forall (v_M : Nat) (v_sx : sx) (v : uN) (i : uN), fun_vshiftop_ (.mk_ishape (.X .I32 (.mk_dim v_M))) (.mk_vshiftop__0 .I32 v_M (.SHR v_sx)) v i (ivshiftopsx_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) ishr_ v_sx v i) + | fun_vshiftop__case_5 : forall (v_M : Nat) (v_sx : sx) (v : uN) (i : uN), fun_vshiftop_ (.mk_ishape (.X .I64 (.mk_dim v_M))) (.mk_vshiftop__0 .I64 v_M (.SHR v_sx)) v i (ivshiftopsx_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) ishr_ v_sx v i) + | fun_vshiftop__case_6 : forall (v_M : Nat) (v_sx : sx) (v : uN) (i : uN), fun_vshiftop_ (.mk_ishape (.X .I8 (.mk_dim v_M))) (.mk_vshiftop__0 .I8 v_M (.SHR v_sx)) v i (ivshiftopsx_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) ishr_ v_sx v i) + | fun_vshiftop__case_7 : forall (v_M : Nat) (v_sx : sx) (v : uN) (i : uN), fun_vshiftop_ (.mk_ishape (.X .I16 (.mk_dim v_M))) (.mk_vshiftop__0 .I16 v_M (.SHR v_sx)) v i (ivshiftopsx_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) ishr_ v_sx v i) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:188.6-188.18 -/ +inductive fun_vbitmaskop_ : ishape -> vec_ -> u32 -> Prop where + | fun_vbitmaskop__case_0 : forall (v_M : Nat) (v : uN) (var_0 : u32), + (fun_ivbitmaskop_ (.X (lanetype_Jnn .I32) (.mk_dim v_M)) v var_0) -> + fun_vbitmaskop_ (.mk_ishape (.X .I32 (.mk_dim v_M))) v var_0 + | fun_vbitmaskop__case_1 : forall (v_M : Nat) (v : uN) (var_0 : u32), + (fun_ivbitmaskop_ (.X (lanetype_Jnn .I64) (.mk_dim v_M)) v var_0) -> + fun_vbitmaskop_ (.mk_ishape (.X .I64 (.mk_dim v_M))) v var_0 + | fun_vbitmaskop__case_2 : forall (v_M : Nat) (v : uN) (var_0 : u32), + (fun_ivbitmaskop_ (.X (lanetype_Jnn .I8) (.mk_dim v_M)) v var_0) -> + fun_vbitmaskop_ (.mk_ishape (.X .I8 (.mk_dim v_M))) v var_0 + | fun_vbitmaskop__case_3 : forall (v_M : Nat) (v : uN) (var_0 : u32), + (fun_ivbitmaskop_ (.X (lanetype_Jnn .I16) (.mk_dim v_M)) v var_0) -> + fun_vbitmaskop_ (.mk_ishape (.X .I16 (.mk_dim v_M))) v var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:190.6-190.17 -/ +inductive fun_vswizzlop_ : bshape -> vswizzlop_ -> vec_ -> vec_ -> vec_ -> Prop where + | fun_vswizzlop__case_0 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vswizzlop_ (.mk_bshape (.X .I8 (.mk_dim v_M))) (.mk_vswizzlop__0 v_M .SWIZZLE) v_1 v_2 (ivswizzlop_ (.X .I8 (.mk_dim v_M)) iswizzle_lane_ v_1 v_2) + | fun_vswizzlop__case_1 : forall (v_M : Nat) (v_1 : uN) (v_2 : uN), fun_vswizzlop_ (.mk_bshape (.X .I8 (.mk_dim v_M))) (.mk_vswizzlop__0 v_M .RELAXED_SWIZZLE) v_1 v_2 (ivswizzlop_ (.X .I8 (.mk_dim v_M)) irelaxed_swizzle_lane_ v_1 v_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:192.6-192.17 -/ +inductive fun_vshufflop_ : bshape -> (List laneidx) -> vec_ -> vec_ -> vec_ -> Prop where + | fun_vshufflop__case_0 : forall (v_M : Nat) (i_lst : (List laneidx)) (v_1 : uN) (v_2 : uN) (var_0 : vec_), + (fun_ivshufflop_ (.X .I8 (.mk_dim v_M)) i_lst v_1 v_2 var_0) -> + fun_vshufflop_ (.mk_bshape (.X .I8 (.mk_dim v_M))) i_lst v_1 v_2 var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:195.6-195.18 -/ +inductive fun_vnarrowop__ : shape -> shape -> sx -> vec_ -> vec_ -> vec_ -> Prop where + | fun_vnarrowop___case_0 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I32)) (lsize (lanetype_Jnn .I32)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I32)) (lsize (lanetype_Jnn .I32)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I32 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I32 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I32 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_1 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I64)) (lsize (lanetype_Jnn .I32)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I64)) (lsize (lanetype_Jnn .I32)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I32 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I32 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I64 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_2 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I8)) (lsize (lanetype_Jnn .I32)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I8)) (lsize (lanetype_Jnn .I32)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I32 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I32 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I8 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_3 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_lane__2 .I32 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I16)) (lsize (lanetype_Jnn .I32)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I16)) (lsize (lanetype_Jnn .I32)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I32 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I32 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I16 (.mk_dim M_1)) (.X .I32 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_4 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I32)) (lsize (lanetype_Jnn .I64)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I32)) (lsize (lanetype_Jnn .I64)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I64 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I64 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I32 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_5 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I64)) (lsize (lanetype_Jnn .I64)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I64)) (lsize (lanetype_Jnn .I64)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I64 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I64 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I64 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_6 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I8)) (lsize (lanetype_Jnn .I64)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I8)) (lsize (lanetype_Jnn .I64)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I64 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I64 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I8 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_7 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_lane__2 .I64 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I16)) (lsize (lanetype_Jnn .I64)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I16)) (lsize (lanetype_Jnn .I64)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I64 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I64 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I16 (.mk_dim M_1)) (.X .I64 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_8 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I32)) (lsize (lanetype_Jnn .I8)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I32)) (lsize (lanetype_Jnn .I8)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I8 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I8 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I32 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_9 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I64)) (lsize (lanetype_Jnn .I8)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I64)) (lsize (lanetype_Jnn .I8)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I8 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I8 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I64 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_10 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I8)) (lsize (lanetype_Jnn .I8)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I8)) (lsize (lanetype_Jnn .I8)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I8 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I8 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I8 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_11 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_lane__2 .I8 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I16)) (lsize (lanetype_Jnn .I8)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I16)) (lsize (lanetype_Jnn .I8)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I8 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I8 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I16 (.mk_dim M_1)) (.X .I8 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_12 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I32) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I32)) (lsize (lanetype_Jnn .I16)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I32)) (lsize (lanetype_Jnn .I16)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I16 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I16 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I32 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_13 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I64) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I64)) (lsize (lanetype_Jnn .I16)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I64)) (lsize (lanetype_Jnn .I16)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I16 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I16 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I64 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_14 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I8) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I8)) (lsize (lanetype_Jnn .I16)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I8)) (lsize (lanetype_Jnn .I16)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I16 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I16 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I8 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) v_sx v_1 v_2 v + | fun_vnarrowop___case_15 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN) (v_2 : uN) (v : uN) (c_1_lst : (List lane_)) (c_2_lst : (List lane_)) (c'_1_lst : (List iN)) (c'_2_lst : (List iN)), + Forall (fun (c_1 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_1))) c_1)) c_1_lst -> + Forall (fun (c_2 : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_1))) c_2)) c_2_lst -> + Forall (fun (c'_1 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c'_1))) c'_1_lst -> + Forall (fun (c'_2 : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_lane__2 .I16 c'_2))) c'_2_lst -> + (c_1_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) v_1)) -> + (c_2_lst == (lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) v_2)) -> + Forall (fun (c_1 : lane_) => ((proj_lane__2 c_1) != none)) c_1_lst -> + (c'_1_lst == (List.map (fun (c_1 : lane_) => (narrow__ (lsize (lanetype_Jnn .I16)) (lsize (lanetype_Jnn .I16)) v_sx (Option.get! (proj_lane__2 c_1)))) c_1_lst)) -> + Forall (fun (c_2 : lane_) => ((proj_lane__2 c_2) != none)) c_2_lst -> + (c'_2_lst == (List.map (fun (c_2 : lane_) => (narrow__ (lsize (lanetype_Jnn .I16)) (lsize (lanetype_Jnn .I16)) v_sx (Option.get! (proj_lane__2 c_2)))) c_2_lst)) -> + (v == (inv_lanes_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ((List.map (fun (c'_1 : iN) => (.mk_lane__2 .I16 c'_1)) c'_1_lst) ++ (List.map (fun (c'_2 : iN) => (.mk_lane__2 .I16 c'_2)) c'_2_lst)))) -> + fun_vnarrowop__ (.X .I16 (.mk_dim M_1)) (.X .I16 (.mk_dim M_2)) v_sx v_1 v_2 v + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:356.1-356.76 -/ +opaque ivadd_pairwise_ : forall (v_N : N) (var_0 : (List iN)), (List iN) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:342.1-342.93 -/ +opaque ivextunop__ : forall (shape_1 : shape) (shape_2 : shape) (f_ : N -> (List iN) -> (List iN)) (v_sx : sx) (v_vec_ : vec_), vec_ := opaqueDef + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:198.6-198.17 -/ +inductive fun_vextunop__ : ishape -> ishape -> vextunop__ -> vec_ -> vec_ -> Prop where + | fun_vextunop___case_0 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextunop___0 .I32 M_1 .I32 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_1 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextunop___0 .I64 M_1 .I32 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_2 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextunop___0 .I8 M_1 .I32 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_3 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextunop___0 .I16 M_1 .I32 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_4 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextunop___0 .I32 M_1 .I64 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_5 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextunop___0 .I64 M_1 .I64 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_6 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextunop___0 .I8 M_1 .I64 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_7 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextunop___0 .I16 M_1 .I64 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_8 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextunop___0 .I32 M_1 .I8 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_9 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextunop___0 .I64 M_1 .I8 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_10 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextunop___0 .I8 M_1 .I8 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_11 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextunop___0 .I16 M_1 .I8 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_12 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextunop___0 .I32 M_1 .I16 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_13 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextunop___0 .I64 M_1 .I16 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_14 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextunop___0 .I8 M_1 .I16 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + | fun_vextunop___case_15 : forall (M_1 : Nat) (M_2 : Nat) (v_sx : sx) (v_1 : uN), fun_vextunop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextunop___0 .I16 M_1 .I16 M_2 (.EXTADD_PAIRWISE v_sx)) v_1 (ivextunop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivadd_pairwise_ v_sx v_1) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:363.1-363.40 -/ +opaque ivdot_ : forall (v_N : N) (var_0 : (List iN)) (var_1 : (List iN)), (List iN) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:367.1-367.76 -/ +opaque ivdot_sat_ : forall (v_N : N) (var_0 : (List iN)) (var_1 : (List iN)), (List iN) := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:348.1-348.136 -/ +opaque ivextbinop__ : forall (shape_1 : shape) (shape_2 : shape) (f_ : N -> (List iN) -> (List iN) -> (List iN)) (v_sx : sx) (v_sx_0 : sx) (v_laneidx : laneidx) (v_laneidx_0 : laneidx) (v_vec_ : vec_) (v_vec__0 : vec_), vec_ := opaqueDef + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:360.1-360.40 -/ +def ivmul_ : ∀ (v_N : N) (var_0 : (List iN)) (var_1 : (List iN)) , (List iN) + | v_N, i_1_lst, i_2_lst => + (List.zipWith (fun (i_1 : iN) (i_2 : iN) => (imul_ v_N i_1 i_2)) i_1_lst i_2_lst) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:200.6-200.18 -/ +inductive fun_vextbinop__ : ishape -> ishape -> vextbinop__ -> vec_ -> vec_ -> vec_ -> Prop where + | fun_vextbinop___case_0 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I32 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_1 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I32 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_2 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I32 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_3 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I32 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_4 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I64 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_5 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I64 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_6 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I64 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_7 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I64 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_8 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I8 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_9 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I8 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_10 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I8 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_11 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I8 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_12 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I16 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_13 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I16 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_14 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I16 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_15 : forall (M_1 : Nat) (M_2 : Nat) (v_half : half) (v_sx : sx) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I16 M_2 (.EXTMUL v_half v_sx)) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivmul_ v_sx v_sx (.mk_uN (fun_half v_half 0 M_2)) (.mk_uN M_2) v_1 v_2) + | fun_vextbinop___case_16 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I32 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_17 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I32 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_18 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I32 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_19 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I32 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_20 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I64 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_21 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I64 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_22 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I64 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_23 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I64 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_24 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I8 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_25 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I8 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_26 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I8 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_27 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I8 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_28 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I16 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_29 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I16 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_30 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I16 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_31 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I16 M_2 .DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivdot_ .S .S (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_32 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I32 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_33 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I32 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_34 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I32 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_35 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I32 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I32) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_36 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I64 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_37 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I64 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_38 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I64 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_39 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I64 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I64) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_40 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I8 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_41 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I8 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_42 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I8 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_43 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I8 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I8) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_44 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I32 M_1 .I16 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I32) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_45 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I64 M_1 .I16 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I64) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_46 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I8 M_1 .I16 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I8) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + | fun_vextbinop___case_47 : forall (M_1 : Nat) (M_2 : Nat) (v_1 : uN) (v_2 : uN), fun_vextbinop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextbinop___0 .I16 M_1 .I16 M_2 .RELAXED_DOTS) v_1 v_2 (ivextbinop__ (.X (lanetype_Jnn .I16) (.mk_dim M_1)) (.X (lanetype_Jnn .I16) (.mk_dim M_2)) ivdot_sat_ .S (fun_relaxed2 (R_idot ) sx .S .U) (.mk_uN 0) (.mk_uN M_1) v_1 v_2) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec:202.6-202.19 -/ +inductive fun_vextternop__ : ishape -> ishape -> vextternop__ -> vec_ -> vec_ -> vec_ -> vec_ -> Prop where + | fun_vextternop___case_0 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) (.mk_vbinop__0 .I32 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I32 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I32 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I32 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I32 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) (.mk_vbinop__0 .I32 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I32)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextternop___0 .I32 M_1 .I32 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_1 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) (.mk_vbinop__0 .I32 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I32 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I64 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I64 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I32 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) (.mk_vbinop__0 .I32 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I64)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextternop___0 .I64 M_1 .I32 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_2 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) (.mk_vbinop__0 .I32 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I32 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I8 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I8 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I32 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) (.mk_vbinop__0 .I32 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I8)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextternop___0 .I8 M_1 .I32 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_3 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) (.mk_vbinop__0 .I32 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I32 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I16 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I16 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I32 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I32) (.mk_dim M_2)) (.mk_vbinop__0 .I32 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I16)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I32 (.mk_dim M_2))) (.mk_vextternop___0 .I16 M_1 .I32 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_4 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) (.mk_vbinop__0 .I64 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I64 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I32 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I32 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I64 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) (.mk_vbinop__0 .I64 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I32)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextternop___0 .I32 M_1 .I64 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_5 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) (.mk_vbinop__0 .I64 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I64 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I64 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I64 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I64 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) (.mk_vbinop__0 .I64 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I64)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextternop___0 .I64 M_1 .I64 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_6 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) (.mk_vbinop__0 .I64 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I64 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I8 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I8 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I64 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) (.mk_vbinop__0 .I64 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I8)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextternop___0 .I8 M_1 .I64 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_7 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) (.mk_vbinop__0 .I64 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I64 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I16 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I16 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I64 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I64) (.mk_dim M_2)) (.mk_vbinop__0 .I64 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I16)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I64 (.mk_dim M_2))) (.mk_vextternop___0 .I16 M_1 .I64 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_8 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) (.mk_vbinop__0 .I8 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I8 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I32 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I32 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I8 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) (.mk_vbinop__0 .I8 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I32)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextternop___0 .I32 M_1 .I8 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_9 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) (.mk_vbinop__0 .I8 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I8 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I64 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I64 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I8 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) (.mk_vbinop__0 .I8 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I64)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextternop___0 .I64 M_1 .I8 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_10 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) (.mk_vbinop__0 .I8 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I8 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I8 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I8 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I8 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) (.mk_vbinop__0 .I8 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I8)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextternop___0 .I8 M_1 .I8 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_11 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) (.mk_vbinop__0 .I8 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I8 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I16 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I16 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I8 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I8) (.mk_dim M_2)) (.mk_vbinop__0 .I8 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I16)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I8 (.mk_dim M_2))) (.mk_vextternop___0 .I16 M_1 .I8 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_12 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) (.mk_vbinop__0 .I16 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I16 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I32 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I32) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I32 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I16 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) (.mk_vbinop__0 .I16 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I32)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I32 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextternop___0 .I32 M_1 .I16 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_13 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) (.mk_vbinop__0 .I16 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I16 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I64 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I64) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I64 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I16 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) (.mk_vbinop__0 .I16 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I64)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I64 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextternop___0 .I64 M_1 .I16 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_14 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) (.mk_vbinop__0 .I16 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I16 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I8 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I8) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I8 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I16 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) (.mk_vbinop__0 .I16 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I8)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I8 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextternop___0 .I8 M_1 .I16 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + | fun_vextternop___case_15 : forall (M_1 : Nat) (M_2 : Nat) (c_1 : uN) (c_2 : uN) (c_3 : uN) (c : uN) (v_Jnn : Jnn) (v_M : Nat) (c' : uN) (c'' : uN) (var_2 : (List vec_)) (var_1 : vec_) (var_0 : vec_), + (fun_vbinop_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) (.mk_vbinop__0 .I16 M_2 .ADD) c'' c_3 var_2) -> + (fun_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I16 M_2 (.EXTADD_PAIRWISE .S)) c' var_1) -> + (fun_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I16 M_1 v_Jnn v_M .RELAXED_DOTS) c_1 c_2 var_0) -> + (wf_vextbinop__ (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_1))) (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_vextbinop___0 .I16 M_1 v_Jnn v_M .RELAXED_DOTS)) -> + (wf_vextunop__ (.mk_ishape (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_ishape (.X (lanetype_Jnn .I16) (.mk_dim M_2))) (.mk_vextunop___0 v_Jnn v_M .I16 M_2 (.EXTADD_PAIRWISE .S))) -> + (wf_vbinop_ (.X (lanetype_Jnn .I16) (.mk_dim M_2)) (.mk_vbinop__0 .I16 M_2 .ADD)) -> + ((jsizenn v_Jnn) == (2 * (lsizenn1 (lanetype_Jnn .I16)))) -> + (v_M == (2 * M_2)) -> + (c' == var_0) -> + (c'' == var_1) -> + ((List.length var_2) > 0) -> + (List.contains var_2 c) -> + fun_vextternop__ (.mk_ishape (.X .I16 (.mk_dim M_1))) (.mk_ishape (.X .I16 (.mk_dim M_2))) (.mk_vextternop___0 .I16 M_1 .I16 M_2 .RELAXED_DOT_ADDS) c_1 c_2 c_3 c + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:29.1-30.63 -/ +inductive num : Type where + | CONST (v_numtype : numtype) (v_num_ : num_) : num +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def val_num : ∀ (var_0 : num) , val + | (.CONST x0 x1) => + (.CONST x0 x1) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:29.8-29.11 -/ +inductive wf_num : num -> Prop where + | num_case_0 : forall (v_numtype : numtype) (v_num_ : num_), + (wf_num_ v_numtype v_num_) -> + wf_num (.CONST v_numtype v_num_) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:32.1-33.87 -/ +inductive vec : Type where + | VCONST (v_vectype : vectype) (v_vec_ : vec_) : vec +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def val_vec : ∀ (var_0 : vec) , val + | (.VCONST x0 x1) => + (.VCONST x0 x1) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:32.8-32.11 -/ +inductive wf_vec : vec -> Prop where + | vec_case_0 : forall (v_vectype : vectype) (v_vec_ : vec_), + (wf_uN (vsize v_vectype) v_vec_) -> + wf_vec (.VCONST v_vectype v_vec_) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:44.1-46.22 -/ +inductive ref : Type where + | REF_I31_NUM (v_u31 : u31) : ref + | REF_STRUCT_ADDR (v_structaddr : structaddr) : ref + | REF_ARRAY_ADDR (v_arrayaddr : arrayaddr) : ref + | REF_FUNC_ADDR (v_funcaddr : funcaddr) : ref + | REF_EXN_ADDR (v_exnaddr : exnaddr) : ref + | REF_HOST_ADDR (v_hostaddr : hostaddr) : ref + | REF_EXTERN (v_addrref : addrref) : ref + | REF_NULL (v_heaptype : heaptype) : ref +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def ref_addrref : ∀ (var_0 : addrref) , ref + | (.REF_I31_NUM x0) => + (.REF_I31_NUM x0) + | (.REF_STRUCT_ADDR x0) => + (.REF_STRUCT_ADDR x0) + | (.REF_ARRAY_ADDR x0) => + (.REF_ARRAY_ADDR x0) + | (.REF_FUNC_ADDR x0) => + (.REF_FUNC_ADDR x0) + | (.REF_EXN_ADDR x0) => + (.REF_EXN_ADDR x0) + | (.REF_HOST_ADDR x0) => + (.REF_HOST_ADDR x0) + | (.REF_EXTERN x0) => + (.REF_EXTERN x0) + + +/- Auxiliary Definition at: -/ +def instr_ref : ∀ (var_0 : ref) , instr + | (.REF_I31_NUM x0) => + (.REF_I31_NUM x0) + | (.REF_STRUCT_ADDR x0) => + (.REF_STRUCT_ADDR x0) + | (.REF_ARRAY_ADDR x0) => + (.REF_ARRAY_ADDR x0) + | (.REF_FUNC_ADDR x0) => + (.REF_FUNC_ADDR x0) + | (.REF_EXN_ADDR x0) => + (.REF_EXN_ADDR x0) + | (.REF_HOST_ADDR x0) => + (.REF_HOST_ADDR x0) + | (.REF_EXTERN x0) => + (.REF_EXTERN x0) + | (.REF_NULL x0) => + (.REF_NULL x0) + + +/- Auxiliary Definition at: -/ +def val_ref : ∀ (var_0 : ref) , val + | (.REF_I31_NUM x0) => + (.REF_I31_NUM x0) + | (.REF_STRUCT_ADDR x0) => + (.REF_STRUCT_ADDR x0) + | (.REF_ARRAY_ADDR x0) => + (.REF_ARRAY_ADDR x0) + | (.REF_FUNC_ADDR x0) => + (.REF_FUNC_ADDR x0) + | (.REF_EXN_ADDR x0) => + (.REF_EXN_ADDR x0) + | (.REF_HOST_ADDR x0) => + (.REF_HOST_ADDR x0) + | (.REF_EXTERN x0) => + (.REF_EXTERN x0) + | (.REF_NULL x0) => + (.REF_NULL x0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:44.8-44.11 -/ +inductive wf_ref : ref -> Prop where + | ref_case_0 : forall (v_u31 : u31), + (wf_uN 31 v_u31) -> + wf_ref (.REF_I31_NUM v_u31) + | ref_case_1 : forall (v_structaddr : structaddr), wf_ref (.REF_STRUCT_ADDR v_structaddr) + | ref_case_2 : forall (v_arrayaddr : arrayaddr), wf_ref (.REF_ARRAY_ADDR v_arrayaddr) + | ref_case_3 : forall (v_funcaddr : funcaddr), wf_ref (.REF_FUNC_ADDR v_funcaddr) + | ref_case_4 : forall (v_exnaddr : exnaddr), wf_ref (.REF_EXN_ADDR v_exnaddr) + | ref_case_5 : forall (v_hostaddr : hostaddr), wf_ref (.REF_HOST_ADDR v_hostaddr) + | ref_case_6 : forall (v_addrref : addrref), + (wf_addrref v_addrref) -> + wf_ref (.REF_EXTERN v_addrref) + | ref_case_7 : forall (v_heaptype : heaptype), + (wf_heaptype v_heaptype) -> + wf_ref (.REF_NULL v_heaptype) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:51.1-52.58 -/ +inductive result : Type where + | _VALS (val_lst : (List val)) : result + | REF_EXN_ADDRTHROW_REF (v_exnaddr : exnaddr) : result + | TRAP : result +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:51.8-51.14 -/ +inductive wf_result : result -> Prop where + | result_case_0 : forall (val_lst : (List val)), + Forall (fun (v_val : val) => (wf_val v_val)) val_lst -> + wf_result (._VALS val_lst) + | result_case_1 : forall (v_exnaddr : exnaddr), wf_result (.REF_EXN_ADDRTHROW_REF v_exnaddr) + | result_case_2 : wf_result .TRAP + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:60.1-60.72 -/ +inductive hostfunc : Type where + | mk_hostfunc : hostfunc +deriving Inhabited, BEq + + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:61.1-61.73 -/ +inductive funccode : Type where + | FUNC (v_typeidx : typeidx) (local_lst : (List «local»)) (v_expr : expr) : funccode + | mk_funccode : funccode +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:61.8-61.16 -/ +inductive wf_funccode : funccode -> Prop where + | funccode_case_0 : forall (v_typeidx : typeidx) (local_lst : (List «local»)) (v_expr : expr), + (wf_uN 32 v_typeidx) -> + Forall (fun (v_local : «local») => (wf_local v_local)) local_lst -> + Forall (fun (v_expr : instr) => (wf_instr v_expr)) v_expr -> + wf_funccode (.FUNC v_typeidx local_lst v_expr) + | funccode_case_1 : wf_funccode .mk_funccode + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:63.1-64.19 -/ +structure taginst where MKtaginst :: + TYPE : tagtype +deriving Inhabited, BEq + +def _append_taginst (arg1 arg2 : (taginst)) : taginst where + TYPE := arg1.TYPE /- FIXME - Non-trivial append -/ +instance : Append taginst where + append arg1 arg2 := _append_taginst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:63.8-63.15 -/ +inductive wf_taginst : taginst -> Prop where + | taginst_case_ : forall (var_0 : tagtype), + (wf_typeuse var_0) -> + wf_taginst { TYPE := var_0 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:66.1-67.33 -/ +structure globalinst where MKglobalinst :: + TYPE : globaltype + VALUE : val +deriving Inhabited, BEq + +def _append_globalinst (arg1 arg2 : (globalinst)) : globalinst where + TYPE := arg1.TYPE /- FIXME - Non-trivial append -/ + VALUE := arg1.VALUE /- FIXME - Non-trivial append -/ +instance : Append globalinst where + append arg1 arg2 := _append_globalinst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:66.8-66.18 -/ +inductive wf_globalinst : globalinst -> Prop where + | globalinst_case_ : forall (var_0 : globaltype) (var_1 : val), + (wf_globaltype var_0) -> + (wf_val var_1) -> + wf_globalinst { TYPE := var_0, VALUE := var_1 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:69.1-70.32 -/ +structure meminst where MKmeminst :: + TYPE : memtype + BYTES : (List byte) +deriving Inhabited, BEq + +def _append_meminst (arg1 arg2 : (meminst)) : meminst where + TYPE := arg1.TYPE /- FIXME - Non-trivial append -/ + BYTES := arg1.BYTES ++ arg2.BYTES +instance : Append meminst where + append arg1 arg2 := _append_meminst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:69.8-69.15 -/ +inductive wf_meminst : meminst -> Prop where + | meminst_case_ : forall (var_0 : memtype) (var_1 : (List byte)), + (wf_memtype var_0) -> + Forall (fun (var_1 : byte) => (wf_byte var_1)) var_1 -> + wf_meminst { TYPE := var_0, BYTES := var_1 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:72.1-73.32 -/ +structure tableinst where MKtableinst :: + TYPE : tabletype + REFS : (List ref) +deriving Inhabited, BEq + +def _append_tableinst (arg1 arg2 : (tableinst)) : tableinst where + TYPE := arg1.TYPE /- FIXME - Non-trivial append -/ + REFS := arg1.REFS ++ arg2.REFS +instance : Append tableinst where + append arg1 arg2 := _append_tableinst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:72.8-72.17 -/ +inductive wf_tableinst : tableinst -> Prop where + | tableinst_case_ : forall (var_0 : tabletype) (var_1 : (List ref)), + (wf_tabletype var_0) -> + Forall (fun (var_1 : ref) => (wf_ref var_1)) var_1 -> + wf_tableinst { TYPE := var_0, REFS := var_1 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:75.1-76.53 -/ +structure funcinst where MKfuncinst :: + TYPE : deftype + MODULE : moduleinst + CODE : funccode +deriving Inhabited, BEq + +def _append_funcinst (arg1 arg2 : (funcinst)) : funcinst where + TYPE := arg1.TYPE /- FIXME - Non-trivial append -/ + MODULE := arg1.MODULE ++ arg2.MODULE + CODE := arg1.CODE /- FIXME - Non-trivial append -/ +instance : Append funcinst where + append arg1 arg2 := _append_funcinst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:75.8-75.16 -/ +inductive wf_funcinst : funcinst -> Prop where + | funcinst_case_ : forall (var_0 : deftype) (var_1 : moduleinst) (var_2 : funccode), + (wf_moduleinst var_1) -> + (wf_funccode var_2) -> + wf_funcinst { TYPE := var_0, MODULE := var_1, CODE := var_2 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:78.1-79.18 -/ +structure datainst where MKdatainst :: + BYTES : (List byte) +deriving Inhabited, BEq + +def _append_datainst (arg1 arg2 : (datainst)) : datainst where + BYTES := arg1.BYTES ++ arg2.BYTES +instance : Append datainst where + append arg1 arg2 := _append_datainst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:78.8-78.16 -/ +inductive wf_datainst : datainst -> Prop where + | datainst_case_ : forall (var_0 : (List byte)), + Forall (fun (var_0 : byte) => (wf_byte var_0)) var_0 -> + wf_datainst { BYTES := var_0 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:81.1-82.31 -/ +structure eleminst where MKeleminst :: + TYPE : elemtype + REFS : (List ref) +deriving Inhabited, BEq + +def _append_eleminst (arg1 arg2 : (eleminst)) : eleminst where + TYPE := arg1.TYPE /- FIXME - Non-trivial append -/ + REFS := arg1.REFS ++ arg2.REFS +instance : Append eleminst where + append arg1 arg2 := _append_eleminst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:81.8-81.16 -/ +inductive wf_eleminst : eleminst -> Prop where + | eleminst_case_ : forall (var_0 : elemtype) (var_1 : (List ref)), + (wf_reftype var_0) -> + Forall (fun (var_1 : ref) => (wf_ref var_1)) var_1 -> + wf_eleminst { TYPE := var_0, REFS := var_1 } + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:88.1-89.64 -/ +inductive packval : Type where + | PACK (v_packtype : packtype) (v_iN : iN) : packval +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:88.8-88.15 -/ +inductive wf_packval : packval -> Prop where + | packval_case_0 : forall (v_packtype : packtype) (v_iN : iN), + (wf_uN (psize v_packtype) v_iN) -> + wf_packval (.PACK v_packtype v_iN) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:91.1-92.18 -/ +inductive fieldval : Type where + | CONST (v_numtype : numtype) (v_num_ : num_) : fieldval + | VCONST (v_vectype : vectype) (v_vec_ : vec_) : fieldval + | REF_NULL (v_heaptype : heaptype) : fieldval + | REF_I31_NUM (v_u31 : u31) : fieldval + | REF_STRUCT_ADDR (v_structaddr : structaddr) : fieldval + | REF_ARRAY_ADDR (v_arrayaddr : arrayaddr) : fieldval + | REF_FUNC_ADDR (v_funcaddr : funcaddr) : fieldval + | REF_EXN_ADDR (v_exnaddr : exnaddr) : fieldval + | REF_HOST_ADDR (v_hostaddr : hostaddr) : fieldval + | REF_EXTERN (v_addrref : addrref) : fieldval + | PACK (v_packtype : packtype) (v_iN : iN) : fieldval +deriving Inhabited, BEq + + +/- Auxiliary Definition at: -/ +def fieldval_val : ∀ (var_0 : val) , fieldval + | (.CONST x0 x1) => + (.CONST x0 x1) + | (.VCONST x0 x1) => + (.VCONST x0 x1) + | (.REF_NULL x0) => + (.REF_NULL x0) + | (.REF_I31_NUM x0) => + (.REF_I31_NUM x0) + | (.REF_STRUCT_ADDR x0) => + (.REF_STRUCT_ADDR x0) + | (.REF_ARRAY_ADDR x0) => + (.REF_ARRAY_ADDR x0) + | (.REF_FUNC_ADDR x0) => + (.REF_FUNC_ADDR x0) + | (.REF_EXN_ADDR x0) => + (.REF_EXN_ADDR x0) + | (.REF_HOST_ADDR x0) => + (.REF_HOST_ADDR x0) + | (.REF_EXTERN x0) => + (.REF_EXTERN x0) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:91.8-91.16 -/ +inductive wf_fieldval : fieldval -> Prop where + | fieldval_case_0 : forall (v_numtype : numtype) (v_num_ : num_), + (wf_num_ v_numtype v_num_) -> + wf_fieldval (.CONST v_numtype v_num_) + | fieldval_case_1 : forall (v_vectype : vectype) (v_vec_ : vec_), + (wf_uN (vsize v_vectype) v_vec_) -> + wf_fieldval (.VCONST v_vectype v_vec_) + | fieldval_case_2 : forall (v_heaptype : heaptype), + (wf_heaptype v_heaptype) -> + wf_fieldval (.REF_NULL v_heaptype) + | fieldval_case_3 : forall (v_u31 : u31), + (wf_uN 31 v_u31) -> + wf_fieldval (.REF_I31_NUM v_u31) + | fieldval_case_4 : forall (v_structaddr : structaddr), wf_fieldval (.REF_STRUCT_ADDR v_structaddr) + | fieldval_case_5 : forall (v_arrayaddr : arrayaddr), wf_fieldval (.REF_ARRAY_ADDR v_arrayaddr) + | fieldval_case_6 : forall (v_funcaddr : funcaddr), wf_fieldval (.REF_FUNC_ADDR v_funcaddr) + | fieldval_case_7 : forall (v_exnaddr : exnaddr), wf_fieldval (.REF_EXN_ADDR v_exnaddr) + | fieldval_case_8 : forall (v_hostaddr : hostaddr), wf_fieldval (.REF_HOST_ADDR v_hostaddr) + | fieldval_case_9 : forall (v_addrref : addrref), + (wf_addrref v_addrref) -> + wf_fieldval (.REF_EXTERN v_addrref) + | fieldval_case_10 : forall (v_packtype : packtype) (v_iN : iN), + (wf_uN (psize v_packtype) v_iN) -> + wf_fieldval (.PACK v_packtype v_iN) + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:94.1-95.37 -/ +structure structinst where MKstructinst :: + TYPE : deftype + FIELDS : (List fieldval) +deriving Inhabited, BEq + +def _append_structinst (arg1 arg2 : (structinst)) : structinst where + TYPE := arg1.TYPE /- FIXME - Non-trivial append -/ + FIELDS := arg1.FIELDS ++ arg2.FIELDS +instance : Append structinst where + append arg1 arg2 := _append_structinst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:94.8-94.18 -/ +inductive wf_structinst : structinst -> Prop where + | structinst_case_ : forall (var_0 : deftype) (var_1 : (List fieldval)), + Forall (fun (var_1 : fieldval) => (wf_fieldval var_1)) var_1 -> + wf_structinst { TYPE := var_0, FIELDS := var_1 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:97.1-98.37 -/ +structure arrayinst where MKarrayinst :: + TYPE : deftype + FIELDS : (List fieldval) +deriving Inhabited, BEq + +def _append_arrayinst (arg1 arg2 : (arrayinst)) : arrayinst where + TYPE := arg1.TYPE /- FIXME - Non-trivial append -/ + FIELDS := arg1.FIELDS ++ arg2.FIELDS +instance : Append arrayinst where + append arg1 arg2 := _append_arrayinst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:97.8-97.17 -/ +inductive wf_arrayinst : arrayinst -> Prop where + | arrayinst_case_ : forall (var_0 : deftype) (var_1 : (List fieldval)), + Forall (fun (var_1 : fieldval) => (wf_fieldval var_1)) var_1 -> + wf_arrayinst { TYPE := var_0, FIELDS := var_1 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:100.1-101.31 -/ +structure exninst where MKexninst :: + TAG : tagaddr + FIELDS : (List val) +deriving Inhabited, BEq + +def _append_exninst (arg1 arg2 : (exninst)) : exninst where + TAG := arg1.TAG /- FIXME - Non-trivial append -/ + FIELDS := arg1.FIELDS ++ arg2.FIELDS +instance : Append exninst where + append arg1 arg2 := _append_exninst arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:100.8-100.15 -/ +inductive wf_exninst : exninst -> Prop where + | exninst_case_ : forall (var_0 : tagaddr) (var_1 : (List val)), + Forall (fun (var_1 : val) => (wf_val var_1)) var_1 -> + wf_exninst { TAG := var_0, FIELDS := var_1 } + +/- Record Creation Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:118.1-128.20 -/ +structure store where MKstore :: + TAGS : (List taginst) + GLOBALS : (List globalinst) + MEMS : (List meminst) + TABLES : (List tableinst) + FUNCS : (List funcinst) + DATAS : (List datainst) + ELEMS : (List eleminst) + STRUCTS : (List structinst) + ARRAYS : (List arrayinst) + EXNS : (List exninst) +deriving Inhabited, BEq + +def _append_store (arg1 arg2 : (store)) : store where + TAGS := arg1.TAGS ++ arg2.TAGS + GLOBALS := arg1.GLOBALS ++ arg2.GLOBALS + MEMS := arg1.MEMS ++ arg2.MEMS + TABLES := arg1.TABLES ++ arg2.TABLES + FUNCS := arg1.FUNCS ++ arg2.FUNCS + DATAS := arg1.DATAS ++ arg2.DATAS + ELEMS := arg1.ELEMS ++ arg2.ELEMS + STRUCTS := arg1.STRUCTS ++ arg2.STRUCTS + ARRAYS := arg1.ARRAYS ++ arg2.ARRAYS + EXNS := arg1.EXNS ++ arg2.EXNS +instance : Append store where + append arg1 arg2 := _append_store arg1 arg2 + + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:118.8-118.13 -/ +inductive wf_store : store -> Prop where + | store_case_ : forall (var_0 : (List taginst)) (var_1 : (List globalinst)) (var_2 : (List meminst)) (var_3 : (List tableinst)) (var_4 : (List funcinst)) (var_5 : (List datainst)) (var_6 : (List eleminst)) (var_7 : (List structinst)) (var_8 : (List arrayinst)) (var_9 : (List exninst)), + Forall (fun (var_0 : taginst) => (wf_taginst var_0)) var_0 -> + Forall (fun (var_1 : globalinst) => (wf_globalinst var_1)) var_1 -> + Forall (fun (var_2 : meminst) => (wf_meminst var_2)) var_2 -> + Forall (fun (var_3 : tableinst) => (wf_tableinst var_3)) var_3 -> + Forall (fun (var_4 : funcinst) => (wf_funcinst var_4)) var_4 -> + Forall (fun (var_5 : datainst) => (wf_datainst var_5)) var_5 -> + Forall (fun (var_6 : eleminst) => (wf_eleminst var_6)) var_6 -> + Forall (fun (var_7 : structinst) => (wf_structinst var_7)) var_7 -> + Forall (fun (var_8 : arrayinst) => (wf_arrayinst var_8)) var_8 -> + Forall (fun (var_9 : exninst) => (wf_exninst var_9)) var_9 -> + wf_store { TAGS := var_0, GLOBALS := var_1, MEMS := var_2, TABLES := var_3, FUNCS := var_4, DATAS := var_5, ELEMS := var_6, STRUCTS := var_7, ARRAYS := var_8, EXNS := var_9 } + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:147.1-147.47 -/ +inductive state : Type where + | mk_state (v_store : store) (v_frame : frame) : state +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:147.8-147.13 -/ +inductive wf_state : state -> Prop where + | state_case_0 : forall (v_store : store) (v_frame : frame), + (wf_store v_store) -> + (wf_frame v_frame) -> + wf_state (.mk_state v_store v_frame) + +/- Inductive Type Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:148.1-148.57 -/ +inductive config : Type where + | mk_config (v_state : state) (instr_lst : (List instr)) : config +deriving Inhabited, BEq + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:148.8-148.14 -/ +inductive wf_config : config -> Prop where + | config_case_0 : forall (v_state : state) (instr_lst : (List instr)), + (wf_state v_state) -> + Forall (fun (v_instr : instr) => (wf_instr v_instr)) instr_lst -> + wf_config (.mk_config v_state instr_lst) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:175.1-175.31 -/ +def Ki : Nat := 1024 + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:181.1-181.100 -/ +def packfield_ : ∀ (v_storagetype : storagetype) (v_val : val) , fieldval + | .BOT, v_val => + (fieldval_val v_val) + | (.REF null_opt v_heaptype), v_val => + (fieldval_val v_val) + | .V128, v_val => + (fieldval_val v_val) + | .F64, v_val => + (fieldval_val v_val) + | .F32, v_val => + (fieldval_val v_val) + | .I64, v_val => + (fieldval_val v_val) + | .I32, v_val => + (fieldval_val v_val) + | .I8, (.CONST .I32 (.mk_num__0 .I32 i)) => + (.PACK .I8 (wrap__ 32 (psize .I8) i)) + | .I16, (.CONST .I32 (.mk_num__0 .I32 i)) => + (.PACK .I16 (wrap__ 32 (psize .I16) i)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:182.1-182.112 -/ +def unpackfield_ : ∀ (v_storagetype : storagetype) (var_0 : (Option sx)) (v_fieldval : fieldval) , val + | .BOT, none, (.REF_EXTERN v_addrref) => + (.REF_EXTERN v_addrref) + | (.REF null_opt v_heaptype), none, (.REF_EXTERN v_addrref) => + (.REF_EXTERN v_addrref) + | .V128, none, (.REF_EXTERN v_addrref) => + (.REF_EXTERN v_addrref) + | .F64, none, (.REF_EXTERN v_addrref) => + (.REF_EXTERN v_addrref) + | .F32, none, (.REF_EXTERN v_addrref) => + (.REF_EXTERN v_addrref) + | .I64, none, (.REF_EXTERN v_addrref) => + (.REF_EXTERN v_addrref) + | .I32, none, (.REF_EXTERN v_addrref) => + (.REF_EXTERN v_addrref) + | .BOT, none, (.REF_HOST_ADDR v_hostaddr) => + (.REF_HOST_ADDR v_hostaddr) + | (.REF null_opt v_heaptype), none, (.REF_HOST_ADDR v_hostaddr) => + (.REF_HOST_ADDR v_hostaddr) + | .V128, none, (.REF_HOST_ADDR v_hostaddr) => + (.REF_HOST_ADDR v_hostaddr) + | .F64, none, (.REF_HOST_ADDR v_hostaddr) => + (.REF_HOST_ADDR v_hostaddr) + | .F32, none, (.REF_HOST_ADDR v_hostaddr) => + (.REF_HOST_ADDR v_hostaddr) + | .I64, none, (.REF_HOST_ADDR v_hostaddr) => + (.REF_HOST_ADDR v_hostaddr) + | .I32, none, (.REF_HOST_ADDR v_hostaddr) => + (.REF_HOST_ADDR v_hostaddr) + | .BOT, none, (.REF_EXN_ADDR v_exnaddr) => + (.REF_EXN_ADDR v_exnaddr) + | (.REF null_opt v_heaptype), none, (.REF_EXN_ADDR v_exnaddr) => + (.REF_EXN_ADDR v_exnaddr) + | .V128, none, (.REF_EXN_ADDR v_exnaddr) => + (.REF_EXN_ADDR v_exnaddr) + | .F64, none, (.REF_EXN_ADDR v_exnaddr) => + (.REF_EXN_ADDR v_exnaddr) + | .F32, none, (.REF_EXN_ADDR v_exnaddr) => + (.REF_EXN_ADDR v_exnaddr) + | .I64, none, (.REF_EXN_ADDR v_exnaddr) => + (.REF_EXN_ADDR v_exnaddr) + | .I32, none, (.REF_EXN_ADDR v_exnaddr) => + (.REF_EXN_ADDR v_exnaddr) + | .BOT, none, (.REF_FUNC_ADDR v_funcaddr) => + (.REF_FUNC_ADDR v_funcaddr) + | (.REF null_opt v_heaptype), none, (.REF_FUNC_ADDR v_funcaddr) => + (.REF_FUNC_ADDR v_funcaddr) + | .V128, none, (.REF_FUNC_ADDR v_funcaddr) => + (.REF_FUNC_ADDR v_funcaddr) + | .F64, none, (.REF_FUNC_ADDR v_funcaddr) => + (.REF_FUNC_ADDR v_funcaddr) + | .F32, none, (.REF_FUNC_ADDR v_funcaddr) => + (.REF_FUNC_ADDR v_funcaddr) + | .I64, none, (.REF_FUNC_ADDR v_funcaddr) => + (.REF_FUNC_ADDR v_funcaddr) + | .I32, none, (.REF_FUNC_ADDR v_funcaddr) => + (.REF_FUNC_ADDR v_funcaddr) + | .BOT, none, (.REF_ARRAY_ADDR v_arrayaddr) => + (.REF_ARRAY_ADDR v_arrayaddr) + | (.REF null_opt v_heaptype), none, (.REF_ARRAY_ADDR v_arrayaddr) => + (.REF_ARRAY_ADDR v_arrayaddr) + | .V128, none, (.REF_ARRAY_ADDR v_arrayaddr) => + (.REF_ARRAY_ADDR v_arrayaddr) + | .F64, none, (.REF_ARRAY_ADDR v_arrayaddr) => + (.REF_ARRAY_ADDR v_arrayaddr) + | .F32, none, (.REF_ARRAY_ADDR v_arrayaddr) => + (.REF_ARRAY_ADDR v_arrayaddr) + | .I64, none, (.REF_ARRAY_ADDR v_arrayaddr) => + (.REF_ARRAY_ADDR v_arrayaddr) + | .I32, none, (.REF_ARRAY_ADDR v_arrayaddr) => + (.REF_ARRAY_ADDR v_arrayaddr) + | .BOT, none, (.REF_STRUCT_ADDR v_structaddr) => + (.REF_STRUCT_ADDR v_structaddr) + | (.REF null_opt v_heaptype), none, (.REF_STRUCT_ADDR v_structaddr) => + (.REF_STRUCT_ADDR v_structaddr) + | .V128, none, (.REF_STRUCT_ADDR v_structaddr) => + (.REF_STRUCT_ADDR v_structaddr) + | .F64, none, (.REF_STRUCT_ADDR v_structaddr) => + (.REF_STRUCT_ADDR v_structaddr) + | .F32, none, (.REF_STRUCT_ADDR v_structaddr) => + (.REF_STRUCT_ADDR v_structaddr) + | .I64, none, (.REF_STRUCT_ADDR v_structaddr) => + (.REF_STRUCT_ADDR v_structaddr) + | .I32, none, (.REF_STRUCT_ADDR v_structaddr) => + (.REF_STRUCT_ADDR v_structaddr) + | .BOT, none, (.REF_I31_NUM v_u31) => + (.REF_I31_NUM v_u31) + | (.REF null_opt v_heaptype), none, (.REF_I31_NUM v_u31) => + (.REF_I31_NUM v_u31) + | .V128, none, (.REF_I31_NUM v_u31) => + (.REF_I31_NUM v_u31) + | .F64, none, (.REF_I31_NUM v_u31) => + (.REF_I31_NUM v_u31) + | .F32, none, (.REF_I31_NUM v_u31) => + (.REF_I31_NUM v_u31) + | .I64, none, (.REF_I31_NUM v_u31) => + (.REF_I31_NUM v_u31) + | .I32, none, (.REF_I31_NUM v_u31) => + (.REF_I31_NUM v_u31) + | .BOT, none, (.REF_NULL heaptype_0) => + (.REF_NULL heaptype_0) + | (.REF null_opt v_heaptype), none, (.REF_NULL heaptype_0) => + (.REF_NULL heaptype_0) + | .V128, none, (.REF_NULL heaptype_0) => + (.REF_NULL heaptype_0) + | .F64, none, (.REF_NULL heaptype_0) => + (.REF_NULL heaptype_0) + | .F32, none, (.REF_NULL heaptype_0) => + (.REF_NULL heaptype_0) + | .I64, none, (.REF_NULL heaptype_0) => + (.REF_NULL heaptype_0) + | .I32, none, (.REF_NULL heaptype_0) => + (.REF_NULL heaptype_0) + | .BOT, none, (.VCONST v_vectype v_vec_) => + (.VCONST v_vectype v_vec_) + | (.REF null_opt v_heaptype), none, (.VCONST v_vectype v_vec_) => + (.VCONST v_vectype v_vec_) + | .V128, none, (.VCONST v_vectype v_vec_) => + (.VCONST v_vectype v_vec_) + | .F64, none, (.VCONST v_vectype v_vec_) => + (.VCONST v_vectype v_vec_) + | .F32, none, (.VCONST v_vectype v_vec_) => + (.VCONST v_vectype v_vec_) + | .I64, none, (.VCONST v_vectype v_vec_) => + (.VCONST v_vectype v_vec_) + | .I32, none, (.VCONST v_vectype v_vec_) => + (.VCONST v_vectype v_vec_) + | .BOT, none, (.CONST v_numtype v_num_) => + (.CONST v_numtype v_num_) + | (.REF null_opt v_heaptype), none, (.CONST v_numtype v_num_) => + (.CONST v_numtype v_num_) + | .V128, none, (.CONST v_numtype v_num_) => + (.CONST v_numtype v_num_) + | .F64, none, (.CONST v_numtype v_num_) => + (.CONST v_numtype v_num_) + | .F32, none, (.CONST v_numtype v_num_) => + (.CONST v_numtype v_num_) + | .I64, none, (.CONST v_numtype v_num_) => + (.CONST v_numtype v_num_) + | .I32, none, (.CONST v_numtype v_num_) => + (.CONST v_numtype v_num_) + | .I8, (some v_sx), (.PACK .I8 i) => + (.CONST .I32 (.mk_num__0 .I32 (extend__ (psize .I8) 32 v_sx i))) + | .I16, (some v_sx), (.PACK .I16 i) => + (.CONST .I32 (.mk_num__0 .I32 (extend__ (psize .I16) 32 v_sx i))) + + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 -/ +inductive fun_tagsxa : (List externaddr) -> (List tagaddr) -> Prop where + | fun_tagsxa_case_0 : fun_tagsxa [] [] + | fun_tagsxa_case_1 : forall (a : Nat) (xa_lst : (List externaddr)) (var_0 : (List tagaddr)), + (fun_tagsxa xa_lst var_0) -> + fun_tagsxa ([(.TAG a)] ++ xa_lst) ([a] ++ var_0) + | fun_tagsxa_case_2 : forall (v_externaddr : externaddr) (xa_lst : (List externaddr)) (var_0 : (List tagaddr)), + (fun_tagsxa xa_lst var_0) -> + fun_tagsxa ([v_externaddr] ++ xa_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 -/ +inductive fun_globalsxa : (List externaddr) -> (List globaladdr) -> Prop where + | fun_globalsxa_case_0 : fun_globalsxa [] [] + | fun_globalsxa_case_1 : forall (a : Nat) (xa_lst : (List externaddr)) (var_0 : (List globaladdr)), + (fun_globalsxa xa_lst var_0) -> + fun_globalsxa ([(.GLOBAL a)] ++ xa_lst) ([a] ++ var_0) + | fun_globalsxa_case_2 : forall (v_externaddr : externaddr) (xa_lst : (List externaddr)) (var_0 : (List globaladdr)), + (fun_globalsxa xa_lst var_0) -> + fun_globalsxa ([v_externaddr] ++ xa_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 -/ +inductive fun_memsxa : (List externaddr) -> (List memaddr) -> Prop where + | fun_memsxa_case_0 : fun_memsxa [] [] + | fun_memsxa_case_1 : forall (a : Nat) (xa_lst : (List externaddr)) (var_0 : (List memaddr)), + (fun_memsxa xa_lst var_0) -> + fun_memsxa ([(.MEM a)] ++ xa_lst) ([a] ++ var_0) + | fun_memsxa_case_2 : forall (v_externaddr : externaddr) (xa_lst : (List externaddr)) (var_0 : (List memaddr)), + (fun_memsxa xa_lst var_0) -> + fun_memsxa ([v_externaddr] ++ xa_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 -/ +inductive fun_tablesxa : (List externaddr) -> (List tableaddr) -> Prop where + | fun_tablesxa_case_0 : fun_tablesxa [] [] + | fun_tablesxa_case_1 : forall (a : Nat) (xa_lst : (List externaddr)) (var_0 : (List tableaddr)), + (fun_tablesxa xa_lst var_0) -> + fun_tablesxa ([(.TABLE a)] ++ xa_lst) ([a] ++ var_0) + | fun_tablesxa_case_2 : forall (v_externaddr : externaddr) (xa_lst : (List externaddr)) (var_0 : (List tableaddr)), + (fun_tablesxa xa_lst var_0) -> + fun_tablesxa ([v_externaddr] ++ xa_lst) var_0 + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 -/ +inductive fun_funcsxa : (List externaddr) -> (List funcaddr) -> Prop where + | fun_funcsxa_case_0 : fun_funcsxa [] [] + | fun_funcsxa_case_1 : forall (a : Nat) (xa_lst : (List externaddr)) (var_0 : (List funcaddr)), + (fun_funcsxa xa_lst var_0) -> + fun_funcsxa ([(.FUNC a)] ++ xa_lst) ([a] ++ var_0) + | fun_funcsxa_case_2 : forall (v_externaddr : externaddr) (xa_lst : (List externaddr)) (var_0 : (List funcaddr)), + (fun_funcsxa xa_lst var_0) -> + fun_funcsxa ([v_externaddr] ++ xa_lst) var_0 + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:222.1-222.74 -/ +def fun_store : ∀ (v_state : state) , store + | (.mk_state s f) => + s + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:223.1-223.74 -/ +def fun_frame : ∀ (v_state : state) , frame + | (.mk_state s f) => + f + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:228.1-228.76 -/ +def fun_tagaddr : ∀ (v_state : state) , (List tagaddr) + | (.mk_state s f) => + ((f.MODULE).TAGS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:231.1-231.76 -/ +def fun_moduleinst : ∀ (v_state : state) , moduleinst + | (.mk_state s f) => + (f.MODULE) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:232.1-232.76 -/ +def fun_taginst : ∀ (v_state : state) , (List taginst) + | (.mk_state s f) => + (s.TAGS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:233.1-233.76 -/ +def fun_globalinst : ∀ (v_state : state) , (List globalinst) + | (.mk_state s f) => + (s.GLOBALS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:234.1-234.76 -/ +def fun_meminst : ∀ (v_state : state) , (List meminst) + | (.mk_state s f) => + (s.MEMS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:235.1-235.76 -/ +def fun_tableinst : ∀ (v_state : state) , (List tableinst) + | (.mk_state s f) => + (s.TABLES) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:236.1-236.76 -/ +def fun_funcinst : ∀ (v_state : state) , (List funcinst) + | (.mk_state s f) => + (s.FUNCS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:237.1-237.76 -/ +def fun_datainst : ∀ (v_state : state) , (List datainst) + | (.mk_state s f) => + (s.DATAS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:238.1-238.76 -/ +def fun_eleminst : ∀ (v_state : state) , (List eleminst) + | (.mk_state s f) => + (s.ELEMS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:239.1-239.76 -/ +def fun_structinst : ∀ (v_state : state) , (List structinst) + | (.mk_state s f) => + (s.STRUCTS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:240.1-240.76 -/ +def fun_arrayinst : ∀ (v_state : state) , (List arrayinst) + | (.mk_state s f) => + (s.ARRAYS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:241.1-241.76 -/ +def fun_exninst : ∀ (v_state : state) , (List exninst) + | (.mk_state s f) => + (s.EXNS) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:256.1-256.85 -/ +def fun_type : ∀ (v_state : state) (v_typeidx : typeidx) , deftype + | (.mk_state s f), x => + (((f.MODULE).TYPES)[(proj_uN_0 x)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:257.1-257.85 -/ +def fun_tag : ∀ (v_state : state) (v_tagidx : tagidx) , taginst + | (.mk_state s f), x => + ((s.TAGS)[(((f.MODULE).TAGS)[(proj_uN_0 x)]!)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:258.1-258.85 -/ +def fun_global : ∀ (v_state : state) (v_globalidx : globalidx) , globalinst + | (.mk_state s f), x => + ((s.GLOBALS)[(((f.MODULE).GLOBALS)[(proj_uN_0 x)]!)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:259.1-259.85 -/ +def fun_mem : ∀ (v_state : state) (v_memidx : memidx) , meminst + | (.mk_state s f), x => + ((s.MEMS)[(((f.MODULE).MEMS)[(proj_uN_0 x)]!)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:260.1-260.85 -/ +def fun_table : ∀ (v_state : state) (v_tableidx : tableidx) , tableinst + | (.mk_state s f), x => + ((s.TABLES)[(((f.MODULE).TABLES)[(proj_uN_0 x)]!)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:261.1-261.85 -/ +def fun_func : ∀ (v_state : state) (v_funcidx : funcidx) , funcinst + | (.mk_state s f), x => + ((s.FUNCS)[(((f.MODULE).FUNCS)[(proj_uN_0 x)]!)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:262.1-262.85 -/ +def fun_data : ∀ (v_state : state) (v_dataidx : dataidx) , datainst + | (.mk_state s f), x => + ((s.DATAS)[(((f.MODULE).DATAS)[(proj_uN_0 x)]!)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:263.1-263.85 -/ +def fun_elem : ∀ (v_state : state) (v_tableidx : tableidx) , eleminst + | (.mk_state s f), x => + ((s.ELEMS)[(((f.MODULE).ELEMS)[(proj_uN_0 x)]!)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:264.1-264.85 -/ +def fun_local : ∀ (v_state : state) (v_localidx : localidx) , (Option val) + | (.mk_state s f), x => + ((f.LOCALS)[(proj_uN_0 x)]!) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:279.1-279.165 -/ +def with_local : ∀ (v_state : state) (v_localidx : localidx) (v_val : val) , state + | (.mk_state s f), x, v => + (.mk_state s (f <| LOCALS := (List.modify (f.LOCALS) (proj_uN_0 x) (fun (_ : (Option val)) => (some v))) |>)) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:280.1-280.172 -/ +def with_global : ∀ (v_state : state) (v_globalidx : globalidx) (v_val : val) , state + | (.mk_state s f), x, v => + (.mk_state (s <| GLOBALS := (list_update_func (s.GLOBALS) (((f.MODULE).GLOBALS)[(proj_uN_0 x)]!) (fun (var_1 : globalinst) => (var_1 <| VALUE := v |>))) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:281.1-281.174 -/ +def with_table : ∀ (v_state : state) (v_tableidx : tableidx) (nat : Nat) (v_ref : ref) , state + | (.mk_state s f), x, i, r => + (.mk_state (s <| TABLES := (list_update_func (s.TABLES) (((f.MODULE).TABLES)[(proj_uN_0 x)]!) (fun (var_1 : tableinst) => (var_1 <| REFS := (List.modify (var_1.REFS) i (fun (_ : ref) => r)) |>))) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:282.1-282.165 -/ +def with_tableinst : ∀ (v_state : state) (v_tableidx : tableidx) (v_tableinst : tableinst) , state + | (.mk_state s f), x, ti => + (.mk_state (s <| TABLES := (List.modify (s.TABLES) (((f.MODULE).TABLES)[(proj_uN_0 x)]!) (fun (_ : tableinst) => ti)) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:283.1-283.176 -/ +def with_mem : ∀ (v_state : state) (v_memidx : memidx) (nat : Nat) (nat_0 : Nat) (var_0 : (List byte)) , state + | (.mk_state s f), x, i, j, b_lst => + (.mk_state (s <| MEMS := (list_update_func (s.MEMS) (((f.MODULE).MEMS)[(proj_uN_0 x)]!) (fun (var_1 : meminst) => (var_1 <| BYTES := (list_slice_update (var_1.BYTES) i j b_lst) |>))) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:284.1-284.167 -/ +def with_meminst : ∀ (v_state : state) (v_memidx : memidx) (v_meminst : meminst) , state + | (.mk_state s f), x, mi => + (.mk_state (s <| MEMS := (List.modify (s.MEMS) (((f.MODULE).MEMS)[(proj_uN_0 x)]!) (fun (_ : meminst) => mi)) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:285.1-285.169 -/ +def with_elem : ∀ (v_state : state) (v_elemidx : elemidx) (var_0 : (List ref)) , state + | (.mk_state s f), x, r_lst => + (.mk_state (s <| ELEMS := (list_update_func (s.ELEMS) (((f.MODULE).ELEMS)[(proj_uN_0 x)]!) (fun (var_1 : eleminst) => (var_1 <| REFS := r_lst |>))) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:286.1-286.170 -/ +def with_data : ∀ (v_state : state) (v_dataidx : dataidx) (var_0 : (List byte)) , state + | (.mk_state s f), x, b_lst => + (.mk_state (s <| DATAS := (list_update_func (s.DATAS) (((f.MODULE).DATAS)[(proj_uN_0 x)]!) (fun (var_1 : datainst) => (var_1 <| BYTES := b_lst |>))) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:287.1-287.181 -/ +def with_struct : ∀ (v_state : state) (v_structaddr : structaddr) (nat : Nat) (v_fieldval : fieldval) , state + | (.mk_state s f), a, i, fv => + (.mk_state (s <| STRUCTS := (list_update_func (s.STRUCTS) a (fun (var_1 : structinst) => (var_1 <| FIELDS := (List.modify (var_1.FIELDS) i (fun (_ : fieldval) => fv)) |>))) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:288.1-288.180 -/ +def with_array : ∀ (v_state : state) (v_arrayaddr : arrayaddr) (nat : Nat) (v_fieldval : fieldval) , state + | (.mk_state s f), a, i, fv => + (.mk_state (s <| ARRAYS := (list_update_func (s.ARRAYS) a (fun (var_1 : arrayinst) => (var_1 <| FIELDS := (List.modify (var_1.FIELDS) i (fun (_ : fieldval) => fv)) |>))) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:302.1-302.140 -/ +def add_structinst : ∀ (v_state : state) (var_0 : (List structinst)) , state + | (.mk_state s f), si_lst => + (.mk_state (s <| STRUCTS := ((STRUCTS s) ++ si_lst) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:303.1-303.139 -/ +def add_arrayinst : ∀ (v_state : state) (var_0 : (List arrayinst)) , state + | (.mk_state s f), ai_lst => + (.mk_state (s <| ARRAYS := ((ARRAYS s) ++ ai_lst) |>) f) + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:304.1-304.137 -/ +def add_exninst : ∀ (v_state : state) (var_0 : (List exninst)) , state + | (.mk_state s f), exn_lst => + (.mk_state (s <| EXNS := ((EXNS s) ++ exn_lst) |>) f) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:313.6-313.16 -/ +inductive fun_growtable : tableinst -> Nat -> ref -> (Option tableinst) -> Prop where + | fun_growtable_case_0 : forall (v_tableinst : tableinst) (v_n : Nat) (r : ref) (tableinst' : tableinst) («at» : addrtype) (i : uN) (j_opt : (Option u64)) (rt : reftype) (r'_lst : (List ref)) (i' : uN), + (v_tableinst == { TYPE := (.mk_tabletype «at» (.mk_limits i j_opt) rt), REFS := r'_lst }) -> + (tableinst' == { TYPE := (.mk_tabletype «at» (.mk_limits i' j_opt) rt), REFS := (r'_lst ++ (List.replicate v_n r)) }) -> + ((proj_uN_0 i') == ((List.length r'_lst) + v_n)) -> + Forall (fun (j : u64) => ((proj_uN_0 i') <= (proj_uN_0 j))) (Option.toList j_opt) -> + fun_growtable v_tableinst v_n r (some tableinst') + | fun_growtable_case_1 : forall (x0 : tableinst) (x1 : Nat) (x2 : ref), fun_growtable x0 x1 x2 none + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:314.6-314.14 -/ +inductive fun_growmem : meminst -> Nat -> (Option meminst) -> Prop where + | fun_growmem_case_0 : forall (v_meminst : meminst) (v_n : Nat) (meminst' : meminst) («at» : addrtype) (i : uN) (j_opt : (Option u64)) (b_lst : (List byte)) (i' : uN), + (v_meminst == { TYPE := (.PAGE «at» (.mk_limits i j_opt)), BYTES := b_lst }) -> + (meminst' == { TYPE := (.PAGE «at» (.mk_limits i' j_opt)), BYTES := (b_lst ++ (List.replicate (v_n * (64 * (Ki ))) (.mk_byte 0))) }) -> + (((proj_uN_0 i') : Nat) == ((((List.length b_lst) : Nat) / ((64 * (Ki )) : Nat)) + (v_n : Nat))) -> + Forall (fun (j : u64) => ((proj_uN_0 i') <= (proj_uN_0 j))) (Option.toList j_opt) -> + fun_growmem v_meminst v_n (some meminst') + | fun_growmem_case_1 : forall (x0 : meminst) (x1 : Nat), fun_growmem x0 x1 none + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.1-execution.values.spectec:23.1-23.60 -/ +inductive Num_ok : store -> num -> numtype -> Prop where + | mk_Num_ok : forall (s : store) (nt : numtype) (c : num_), + (wf_num_ nt c) -> + Num_ok s (.CONST nt c) nt + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.1-execution.values.spectec:24.1-24.60 -/ +inductive Vec_ok : store -> vec -> vectype -> Prop where + | mk_Vec_ok : forall (s : store) (vt : vectype) (c : vec_), Vec_ok s (.VCONST vt c) vt + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 -/ +inductive Ref_ok : store -> ref -> reftype -> Prop where + | null : forall (s : store) (ht : heaptype) (ht' : heaptype), + (Heaptype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } ht' ht) -> + Ref_ok s (.REF_NULL ht) (.REF (some .NULL) ht') + | i31 : forall (s : store) (i : u31), Ref_ok s (.REF_I31_NUM i) (.REF none .I31) + | struct : forall (s : store) (a : addr) (dt : deftype), + (a < (List.length (s.STRUCTS))) -> + ((((s.STRUCTS)[a]!).TYPE) == dt) -> + Ref_ok s (.REF_STRUCT_ADDR a) (.REF none (heaptype_deftype dt)) + | array : forall (s : store) (a : addr) (dt : deftype), + (a < (List.length (s.ARRAYS))) -> + ((((s.ARRAYS)[a]!).TYPE) == dt) -> + Ref_ok s (.REF_ARRAY_ADDR a) (.REF none (heaptype_deftype dt)) + | func : forall (s : store) (a : addr) (dt : deftype), + (a < (List.length (s.FUNCS))) -> + ((((s.FUNCS)[a]!).TYPE) == dt) -> + Ref_ok s (.REF_FUNC_ADDR a) (.REF none (heaptype_deftype dt)) + | exn : forall (s : store) (a : addr) (exn : exninst), + (a < (List.length (s.EXNS))) -> + (((s.EXNS)[a]!) == exn) -> + Ref_ok s (.REF_EXN_ADDR a) (.REF none .EXN) + | host : forall (s : store) (a : addr), Ref_ok s (.REF_HOST_ADDR a) (.REF none .ANY) + | extern : forall (s : store) (v_addrref : addrref), + (Ref_ok s (ref_addrref v_addrref) (.REF none .ANY)) -> + Ref_ok s (.REF_EXTERN v_addrref) (.REF none .EXTERN) + | sub : forall (s : store) (v_ref : ref) (rt : reftype) (rt' : reftype), + (Ref_ok s v_ref rt') -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt' rt) -> + Ref_ok s v_ref rt + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 -/ +inductive Val_ok : store -> val -> valtype -> Prop where + | num : forall (s : store) (v_num : num) (nt : numtype), + (Num_ok s v_num nt) -> + Val_ok s (val_num v_num) (valtype_numtype nt) + | vec : forall (s : store) (v_vec : vec) (vt : vectype), + (Vec_ok s v_vec vt) -> + Val_ok s (val_vec v_vec) (valtype_vectype vt) + | ref : forall (s : store) (v_ref : ref) (rt : reftype), + (Ref_ok s v_ref rt) -> + Val_ok s (val_ref v_ref) (valtype_reftype rt) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 -/ +inductive Externaddr_ok : store -> externaddr -> externtype -> Prop where + | tag : forall (s : store) (a : addr) (v_taginst : taginst), + (a < (List.length (s.TAGS))) -> + (((s.TAGS)[a]!) == v_taginst) -> + Externaddr_ok s (.TAG a) (.TAG (v_taginst.TYPE)) + | global : forall (s : store) (a : addr) (v_globalinst : globalinst), + (a < (List.length (s.GLOBALS))) -> + (((s.GLOBALS)[a]!) == v_globalinst) -> + Externaddr_ok s (.GLOBAL a) (.GLOBAL (v_globalinst.TYPE)) + | mem : forall (s : store) (a : addr) (v_meminst : meminst), + (a < (List.length (s.MEMS))) -> + (((s.MEMS)[a]!) == v_meminst) -> + Externaddr_ok s (.MEM a) (.MEM (v_meminst.TYPE)) + | table : forall (s : store) (a : addr) (v_tableinst : tableinst), + (a < (List.length (s.TABLES))) -> + (((s.TABLES)[a]!) == v_tableinst) -> + Externaddr_ok s (.TABLE a) (.TABLE (v_tableinst.TYPE)) + | func : forall (s : store) (a : addr) (v_funcinst : funcinst), + (a < (List.length (s.FUNCS))) -> + (((s.FUNCS)[a]!) == v_funcinst) -> + Externaddr_ok s (.FUNC a) (.FUNC (typeuse_deftype (v_funcinst.TYPE))) + | sub : forall (s : store) (v_externaddr : externaddr) (xt : externtype) (xt' : externtype), + (Externaddr_ok s v_externaddr xt') -> + (Externtype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } xt' xt) -> + Externaddr_ok s v_externaddr xt + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.2-execution.types.spectec:5.6-5.19 -/ +inductive fun_inst_valtype : moduleinst -> valtype -> valtype -> Prop where + | fun_inst_valtype_case_0 : forall (v_moduleinst : moduleinst) (t : valtype) (dt_lst : (List deftype)) (var_0 : valtype), + (fun_subst_all_valtype t (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == (v_moduleinst.TYPES)) -> + fun_inst_valtype v_moduleinst t var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.2-execution.types.spectec:6.6-6.19 -/ +inductive fun_inst_reftype : moduleinst -> reftype -> reftype -> Prop where + | fun_inst_reftype_case_0 : forall (v_moduleinst : moduleinst) (rt : reftype) (dt_lst : (List deftype)) (var_0 : reftype), + (fun_subst_all_reftype rt (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == (v_moduleinst.TYPES)) -> + fun_inst_reftype v_moduleinst rt var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.2-execution.types.spectec:7.6-7.22 -/ +inductive fun_inst_globaltype : moduleinst -> globaltype -> globaltype -> Prop where + | fun_inst_globaltype_case_0 : forall (v_moduleinst : moduleinst) (gt : globaltype) (dt_lst : (List deftype)) (var_0 : globaltype), + (fun_subst_all_globaltype gt (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == (v_moduleinst.TYPES)) -> + fun_inst_globaltype v_moduleinst gt var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.2-execution.types.spectec:8.6-8.19 -/ +inductive fun_inst_memtype : moduleinst -> memtype -> memtype -> Prop where + | fun_inst_memtype_case_0 : forall (v_moduleinst : moduleinst) (mt : memtype) (dt_lst : (List deftype)) (var_0 : memtype), + (fun_subst_all_memtype mt (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == (v_moduleinst.TYPES)) -> + fun_inst_memtype v_moduleinst mt var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.2-execution.types.spectec:9.6-9.21 -/ +inductive fun_inst_tabletype : moduleinst -> tabletype -> tabletype -> Prop where + | fun_inst_tabletype_case_0 : forall (v_moduleinst : moduleinst) (tt : tabletype) (dt_lst : (List deftype)) (var_0 : tabletype), + (fun_subst_all_tabletype tt (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_0) -> + (dt_lst == (v_moduleinst.TYPES)) -> + fun_inst_tabletype v_moduleinst tt var_0 + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:650.1-653.22 -/ +inductive Step_pure_before_ref_eq_true : (List instr) -> Prop where + | ref_eq_null_0 : forall (ref_1 : ref) (ref_2 : ref) (ht_1 : heaptype) (ht_2 : heaptype), + ((ref_1 == (.REF_NULL ht_1)) && (ref_2 == (.REF_NULL ht_2))) -> + Step_pure_before_ref_eq_true [(instr_ref ref_1), (instr_ref ref_2), .REF_EQ] + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:6.1-6.88 -/ +inductive Step_pure : (List instr) -> (List instr) -> Prop where + | unreachable : Step_pure [.UNREACHABLE] [.TRAP] + | nop : Step_pure [.NOP] [] + | drop : forall (v_val : val), Step_pure [(instr_val v_val), .DROP] [] + | select_true : forall (val_1 : val) (val_2 : val) (c : num_) (t_lst_opt : (Option (List valtype))), + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 c))) != 0) -> + Step_pure [(instr_val val_1), (instr_val val_2), (.CONST .I32 c), (.SELECT t_lst_opt)] [(instr_val val_1)] + | select_false : forall (val_1 : val) (val_2 : val) (c : num_) (t_lst_opt : (Option (List valtype))), + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 c))) == 0) -> + Step_pure [(instr_val val_1), (instr_val val_2), (.CONST .I32 c), (.SELECT t_lst_opt)] [(instr_val val_2)] + | if_true : forall (c : num_) (bt : blocktype) (instr_1_lst : (List instr)) (instr_2_lst : (List instr)), + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 c))) != 0) -> + Step_pure [(.CONST .I32 c), (.IFELSE bt instr_1_lst instr_2_lst)] [(.BLOCK bt instr_1_lst)] + | if_false : forall (c : num_) (bt : blocktype) (instr_1_lst : (List instr)) (instr_2_lst : (List instr)), + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 c))) == 0) -> + Step_pure [(.CONST .I32 c), (.IFELSE bt instr_1_lst instr_2_lst)] [(.BLOCK bt instr_2_lst)] + | label_vals : forall (v_n : n) (instr_lst : (List instr)) (val_lst : (List val)), Step_pure [(.LABEL_ v_n instr_lst (List.map (fun (v_val : val) => (instr_val v_val)) val_lst))] (List.map (fun (v_val : val) => (instr_val v_val)) val_lst) + | br_label_zero : forall (v_n : n) (instr'_lst : (List instr)) (val'_lst : (List val)) (val_lst : (List val)) (l : labelidx) (instr_lst : (List instr)), + ((proj_uN_0 l) == 0) -> + Step_pure [(.LABEL_ v_n instr'_lst ((List.map (fun (val' : val) => (instr_val val')) val'_lst) ++ ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([(.BR l)] ++ instr_lst))))] ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ instr'_lst) + | br_label_succ : forall (v_n : n) (instr'_lst : (List instr)) (val_lst : (List val)) (l : labelidx) (instr_lst : (List instr)), + ((proj_uN_0 l) > 0) -> + Step_pure [(.LABEL_ v_n instr'_lst ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([(.BR l)] ++ instr_lst)))] ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.BR (.mk_uN ((((proj_uN_0 l) : Nat) - (1 : Nat)) : Nat)))]) + | br_handler : forall (v_n : n) (catch_lst : (List «catch»)) (val_lst : (List val)) (l : labelidx) (instr_lst : (List instr)), Step_pure [(.HANDLER_ v_n catch_lst ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([(.BR l)] ++ instr_lst)))] ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.BR l)]) + | br_if_true : forall (c : num_) (l : labelidx), + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 c))) != 0) -> + Step_pure [(.CONST .I32 c), (.BR_IF l)] [(.BR l)] + | br_if_false : forall (c : num_) (l : labelidx), + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 c))) == 0) -> + Step_pure [(.CONST .I32 c), (.BR_IF l)] [] + | br_table_lt : forall (i : num_) (l_lst : (List labelidx)) (l' : labelidx), + ((proj_uN_0 (Option.get! (proj_num__0 i))) < (List.length l_lst)) -> + ((proj_num__0 i) != none) -> + (wf_num_ .I32 i) -> + Step_pure [(.CONST .I32 i), (.BR_TABLE l_lst l')] [(.BR (l_lst[(proj_uN_0 (Option.get! (proj_num__0 i)))]!))] + | br_table_ge : forall (i : num_) (l_lst : (List labelidx)) (l' : labelidx), + (wf_num_ .I32 i) -> + ((proj_num__0 i) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 i))) >= (List.length l_lst)) -> + Step_pure [(.CONST .I32 i), (.BR_TABLE l_lst l')] [(.BR l')] + | br_on_null_null : forall (v_val : val) (l : labelidx) (ht : heaptype), + (v_val == (.REF_NULL ht)) -> + Step_pure [(instr_val v_val), (.BR_ON_NULL l)] [(.BR l)] + | br_on_null_addr : forall (v_val : val) (l : labelidx) (ht : heaptype), + (v_val != (.REF_NULL ht)) -> + Step_pure [(instr_val v_val), (.BR_ON_NULL l)] [(instr_val v_val)] + | br_on_non_null_null : forall (v_val : val) (l : labelidx) (ht : heaptype), + (v_val == (.REF_NULL ht)) -> + Step_pure [(instr_val v_val), (.BR_ON_NON_NULL l)] [] + | br_on_non_null_addr : forall (v_val : val) (l : labelidx) (ht : heaptype), + (v_val != (.REF_NULL ht)) -> + Step_pure [(instr_val v_val), (.BR_ON_NON_NULL l)] [(instr_val v_val), (.BR l)] + | call_indirect : forall (x : idx) (yy : typeuse), Step_pure [(.CALL_INDIRECT x yy)] [(.TABLE_GET x), (.REF_CAST (.REF (some .NULL) (heaptype_typeuse yy))), (.CALL_REF yy)] + | return_call_indirect : forall (x : idx) (yy : typeuse), Step_pure [(.RETURN_CALL_INDIRECT x yy)] [(.TABLE_GET x), (.REF_CAST (.REF (some .NULL) (heaptype_typeuse yy))), (.RETURN_CALL_REF yy)] + | frame_vals : forall (v_n : n) (f : frame) (val_lst : (List val)), Step_pure [(.FRAME_ v_n f (List.map (fun (v_val : val) => (instr_val v_val)) val_lst))] (List.map (fun (v_val : val) => (instr_val v_val)) val_lst) + | return_frame : forall (v_n : n) (f : frame) (val'_lst : (List val)) (val_lst : (List val)) (instr_lst : (List instr)), Step_pure [(.FRAME_ v_n f ((List.map (fun (val' : val) => (instr_val val')) val'_lst) ++ ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([.RETURN] ++ instr_lst))))] (List.map (fun (v_val : val) => (instr_val v_val)) val_lst) + | return_label : forall (v_n : n) (instr'_lst : (List instr)) (val_lst : (List val)) (instr_lst : (List instr)), Step_pure [(.LABEL_ v_n instr'_lst ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([.RETURN] ++ instr_lst)))] ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [.RETURN]) + | return_handler : forall (v_n : n) (catch_lst : (List «catch»)) (val_lst : (List val)) (instr_lst : (List instr)), Step_pure [(.HANDLER_ v_n catch_lst ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([.RETURN] ++ instr_lst)))] ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [.RETURN]) + | handler_vals : forall (v_n : n) (catch_lst : (List «catch»)) (val_lst : (List val)), Step_pure [(.HANDLER_ v_n catch_lst (List.map (fun (v_val : val) => (instr_val v_val)) val_lst))] (List.map (fun (v_val : val) => (instr_val v_val)) val_lst) + | trap_instrs : forall (val_lst : (List val)) (instr_lst : (List instr)), + ((val_lst != []) || (instr_lst != [])) -> + Step_pure ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([.TRAP] ++ instr_lst)) [.TRAP] + | trap_label : forall (v_n : n) (instr'_lst : (List instr)), Step_pure [(.LABEL_ v_n instr'_lst [.TRAP])] [.TRAP] + | trap_frame : forall (v_n : n) (f : frame), Step_pure [(.FRAME_ v_n f [.TRAP])] [.TRAP] + | local_tee : forall (v_val : val) (x : idx), Step_pure [(instr_val v_val), (.LOCAL_TEE x)] [(instr_val v_val), (instr_val v_val), (.LOCAL_SET x)] + | ref_i31 : forall (i : num_), + ((proj_num__0 i) != none) -> + (wf_num_ .I32 i) -> + Step_pure [(.CONST .I32 i), .REF_I31] [(.REF_I31_NUM (wrap__ 32 31 (Option.get! (proj_num__0 i))))] + | ref_is_null_true : forall (v_ref : ref) (ht : heaptype), + (v_ref == (.REF_NULL ht)) -> + Step_pure [(instr_ref v_ref), .REF_IS_NULL] [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 1)))] + | ref_is_null_false : forall (v_ref : ref) (ht : heaptype), + (v_ref != (.REF_NULL ht)) -> + Step_pure [(instr_ref v_ref), .REF_IS_NULL] [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 0)))] + | ref_as_non_null_null : forall (v_ref : ref) (ht : heaptype), + (v_ref == (.REF_NULL ht)) -> + Step_pure [(instr_ref v_ref), .REF_AS_NON_NULL] [.TRAP] + | ref_as_non_null_addr : forall (v_ref : ref) (ht : heaptype), + (v_ref != (.REF_NULL ht)) -> + Step_pure [(instr_ref v_ref), .REF_AS_NON_NULL] [(instr_ref v_ref)] + | ref_eq_null : forall (ref_1 : ref) (ref_2 : ref) (ht_1 : heaptype) (ht_2 : heaptype), + ((ref_1 == (.REF_NULL ht_1)) && (ref_2 == (.REF_NULL ht_2))) -> + Step_pure [(instr_ref ref_1), (instr_ref ref_2), .REF_EQ] [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 1)))] + | ref_eq_true : forall (ref_1 : ref) (ref_2 : ref) (ht_1 : heaptype) (ht_2 : heaptype), + ((ref_1 != (.REF_NULL ht_1)) || (ref_2 != (.REF_NULL ht_2))) -> + (ref_1 == ref_2) -> + Step_pure [(instr_ref ref_1), (instr_ref ref_2), .REF_EQ] [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 1)))] + | ref_eq_false : forall (ref_1 : ref) (ref_2 : ref) (ht_1 : heaptype) (ht_2 : heaptype), + (ref_1 != ref_2) -> + ((ref_1 != (.REF_NULL ht_1)) || (ref_2 != (.REF_NULL ht_2))) -> + Step_pure [(instr_ref ref_1), (instr_ref ref_2), .REF_EQ] [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 0)))] + | i31_get_null : forall (ht : heaptype) (v_sx : sx), Step_pure [(.REF_NULL ht), (.I31_GET v_sx)] [.TRAP] + | i31_get_num : forall (i : u31) (v_sx : sx), Step_pure [(.REF_I31_NUM i), (.I31_GET v_sx)] [(.CONST .I32 (.mk_num__0 .I32 (extend__ 31 32 v_sx i)))] + | array_new : forall (v_val : val) (v_n : n) (x : idx), Step_pure [(instr_val v_val), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_NEW x)] ((List.replicate v_n (instr_val v_val)) ++ [(.ARRAY_NEW_FIXED x (.mk_uN v_n))]) + | extern_convert_any_null : forall (ht : heaptype), Step_pure [(.REF_NULL ht), .EXTERN_CONVERT_ANY] [(.REF_NULL .EXTERN)] + | extern_convert_any_addr : forall (v_addrref : addrref), Step_pure [(instr_addrref v_addrref), .EXTERN_CONVERT_ANY] [(.REF_EXTERN v_addrref)] + | any_convert_extern_null : forall (ht : heaptype), Step_pure [(.REF_NULL ht), .ANY_CONVERT_EXTERN] [(.REF_NULL .ANY)] + | any_convert_extern_addr : forall (v_addrref : addrref), Step_pure [(.REF_EXTERN v_addrref), .ANY_CONVERT_EXTERN] [(instr_addrref v_addrref)] + | unop_val : forall (nt : numtype) (c_1 : num_) (unop : unop_) (c : num_) (var_0 : (List num_)), + (fun_unop_ nt unop c_1 var_0) -> + (wf_num_ nt c_1) -> + (wf_unop_ nt unop) -> + (wf_num_ nt c) -> + ((List.length var_0) > 0) -> + (List.contains var_0 c) -> + Step_pure [(.CONST nt c_1), (.UNOP nt unop)] [(.CONST nt c)] + | unop_trap : forall (nt : numtype) (c_1 : num_) (unop : unop_) (var_0 : (List num_)), + (fun_unop_ nt unop c_1 var_0) -> + (wf_num_ nt c_1) -> + (wf_unop_ nt unop) -> + (var_0 == []) -> + Step_pure [(.CONST nt c_1), (.UNOP nt unop)] [.TRAP] + | binop_val : forall (nt : numtype) (c_1 : num_) (c_2 : num_) (binop : binop_) (c : num_) (var_0 : (List num_)), + (fun_binop_ nt binop c_1 c_2 var_0) -> + (wf_num_ nt c_1) -> + (wf_num_ nt c_2) -> + (wf_binop_ nt binop) -> + (wf_num_ nt c) -> + ((List.length var_0) > 0) -> + (List.contains var_0 c) -> + Step_pure [(.CONST nt c_1), (.CONST nt c_2), (.BINOP nt binop)] [(.CONST nt c)] + | binop_trap : forall (nt : numtype) (c_1 : num_) (c_2 : num_) (binop : binop_) (var_0 : (List num_)), + (fun_binop_ nt binop c_1 c_2 var_0) -> + (wf_num_ nt c_1) -> + (wf_num_ nt c_2) -> + (wf_binop_ nt binop) -> + (var_0 == []) -> + Step_pure [(.CONST nt c_1), (.CONST nt c_2), (.BINOP nt binop)] [.TRAP] + | testop : forall (nt : numtype) (c_1 : num_) (testop : testop_) (c : num_), + (wf_num_ nt c_1) -> + (wf_testop_ nt testop) -> + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((Option.get! (proj_num__0 c)) == (fun_testop_ nt testop c_1)) -> + Step_pure [(.CONST nt c_1), (.TESTOP nt testop)] [(.CONST .I32 c)] + | relop : forall (nt : numtype) (c_1 : num_) (c_2 : num_) (relop : relop_) (c : num_), + (wf_num_ nt c_1) -> + (wf_num_ nt c_2) -> + (wf_relop_ nt relop) -> + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((Option.get! (proj_num__0 c)) == (fun_relop_ nt relop c_1 c_2)) -> + Step_pure [(.CONST nt c_1), (.CONST nt c_2), (.RELOP nt relop)] [(.CONST .I32 c)] + | cvtop_val : forall (nt_1 : numtype) (c_1 : num_) (nt_2 : numtype) (cvtop : cvtop__) (c : num_) (var_0 : (List num_)), + (fun_cvtop__ nt_1 nt_2 cvtop c_1 var_0) -> + (wf_num_ nt_1 c_1) -> + (wf_cvtop__ nt_1 nt_2 cvtop) -> + (wf_num_ nt_2 c) -> + ((List.length var_0) > 0) -> + (List.contains var_0 c) -> + Step_pure [(.CONST nt_1 c_1), (.CVTOP nt_2 nt_1 cvtop)] [(.CONST nt_2 c)] + | cvtop_trap : forall (nt_1 : numtype) (c_1 : num_) (nt_2 : numtype) (cvtop : cvtop__) (var_0 : (List num_)), + (fun_cvtop__ nt_1 nt_2 cvtop c_1 var_0) -> + (wf_num_ nt_1 c_1) -> + (wf_cvtop__ nt_1 nt_2 cvtop) -> + (var_0 == []) -> + Step_pure [(.CONST nt_1 c_1), (.CVTOP nt_2 nt_1 cvtop)] [.TRAP] + | vvunop : forall (c_1 : vec_) (v_vvunop : vvunop) (c : vec_), + ((List.length (vvunop_ .V128 v_vvunop c_1)) > 0) -> + (List.contains (vvunop_ .V128 v_vvunop c_1) c) -> + Step_pure [(.VCONST .V128 c_1), (.VVUNOP .V128 v_vvunop)] [(.VCONST .V128 c)] + | vvbinop : forall (c_1 : vec_) (c_2 : vec_) (v_vvbinop : vvbinop) (c : vec_), + ((List.length (vvbinop_ .V128 v_vvbinop c_1 c_2)) > 0) -> + (List.contains (vvbinop_ .V128 v_vvbinop c_1 c_2) c) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VVBINOP .V128 v_vvbinop)] [(.VCONST .V128 c)] + | vvternop : forall (c_1 : vec_) (c_2 : vec_) (c_3 : vec_) (v_vvternop : vvternop) (c : vec_), + ((List.length (vvternop_ .V128 v_vvternop c_1 c_2 c_3)) > 0) -> + (List.contains (vvternop_ .V128 v_vvternop c_1 c_2 c_3) c) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VCONST .V128 c_3), (.VVTERNOP .V128 v_vvternop)] [(.VCONST .V128 c)] + | vvtestop : forall (c_1 : vec_) (c : num_), + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((Option.get! (proj_num__0 c)) == (inez_ (vsize .V128) c_1)) -> + Step_pure [(.VCONST .V128 c_1), (.VVTESTOP .V128 .ANY_TRUE)] [(.CONST .I32 c)] + | vunop_val : forall (c_1 : vec_) (sh : shape) (vunop : vunop_) (c : vec_) (var_0 : (List vec_)), + (fun_vunop_ sh vunop c_1 var_0) -> + (wf_vunop_ sh vunop) -> + ((List.length var_0) > 0) -> + (List.contains var_0 c) -> + Step_pure [(.VCONST .V128 c_1), (.VUNOP sh vunop)] [(.VCONST .V128 c)] + | vunop_trap : forall (c_1 : vec_) (sh : shape) (vunop : vunop_) (var_0 : (List vec_)), + (fun_vunop_ sh vunop c_1 var_0) -> + (wf_vunop_ sh vunop) -> + (var_0 == []) -> + Step_pure [(.VCONST .V128 c_1), (.VUNOP sh vunop)] [.TRAP] + | vbinop_val : forall (c_1 : vec_) (c_2 : vec_) (sh : shape) (vbinop : vbinop_) (c : vec_) (var_0 : (List vec_)), + (fun_vbinop_ sh vbinop c_1 c_2 var_0) -> + (wf_vbinop_ sh vbinop) -> + ((List.length var_0) > 0) -> + (List.contains var_0 c) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VBINOP sh vbinop)] [(.VCONST .V128 c)] + | vbinop_trap : forall (c_1 : vec_) (c_2 : vec_) (sh : shape) (vbinop : vbinop_) (var_0 : (List vec_)), + (fun_vbinop_ sh vbinop c_1 c_2 var_0) -> + (wf_vbinop_ sh vbinop) -> + (var_0 == []) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VBINOP sh vbinop)] [.TRAP] + | vternop_val : forall (c_1 : vec_) (c_2 : vec_) (c_3 : vec_) (sh : shape) (vternop : vternop_) (c : vec_) (var_0 : (List vec_)), + (fun_vternop_ sh vternop c_1 c_2 c_3 var_0) -> + (wf_vternop_ sh vternop) -> + ((List.length var_0) > 0) -> + (List.contains var_0 c) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VCONST .V128 c_3), (.VTERNOP sh vternop)] [(.VCONST .V128 c)] + | vternop_trap : forall (c_1 : vec_) (c_2 : vec_) (c_3 : vec_) (sh : shape) (vternop : vternop_) (var_0 : (List vec_)), + (fun_vternop_ sh vternop c_1 c_2 c_3 var_0) -> + (wf_vternop_ sh vternop) -> + (var_0 == []) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VCONST .V128 c_3), (.VTERNOP sh vternop)] [.TRAP] + | vtestop : forall (c_1 : vec_) (v_Jnn : Jnn) (v_M : M) (c : num_) (i_lst : (List lane_)) (var_0 : Nat), + Forall (fun (i : lane_) => ((proj_lane__2 i) != none)) i_lst -> + (fun_prod (List.map (fun (i : lane_) => (proj_uN_0 (inez_ (jsizenn v_Jnn) (Option.get! (proj_lane__2 i))))) i_lst) var_0) -> + (wf_num_ .I32 c) -> + Forall (fun (i : lane_) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) i)) i_lst -> + (i_lst == (lanes_ (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)) c_1)) -> + ((proj_num__0 c) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 c))) == var_0) -> + Step_pure [(.VCONST .V128 c_1), (.VTESTOP (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)) (.mk_vtestop__0 v_Jnn v_M .ALL_TRUE))] [(.CONST .I32 c)] + | vrelop : forall (c_1 : vec_) (c_2 : vec_) (sh : shape) (vrelop : vrelop_) (c : vec_) (var_0 : vec_), + (fun_vrelop_ sh vrelop c_1 c_2 var_0) -> + (wf_vrelop_ sh vrelop) -> + (c == var_0) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VRELOP sh vrelop)] [(.VCONST .V128 c)] + | vshiftop : forall (c_1 : vec_) (i : num_) (sh : ishape) (vshiftop : vshiftop_) (c : vec_) (var_0 : vec_), + ((proj_num__0 i) != none) -> + (fun_vshiftop_ sh vshiftop c_1 (Option.get! (proj_num__0 i)) var_0) -> + (wf_num_ .I32 i) -> + (wf_vshiftop_ sh vshiftop) -> + (c == var_0) -> + Step_pure [(.VCONST .V128 c_1), (.CONST .I32 i), (.VSHIFTOP sh vshiftop)] [(.VCONST .V128 c)] + | vbitmask : forall (c_1 : vec_) (sh : ishape) (c : num_) (var_0 : u32), + (fun_vbitmaskop_ sh c_1 var_0) -> + (wf_num_ .I32 c) -> + ((proj_num__0 c) != none) -> + ((Option.get! (proj_num__0 c)) == var_0) -> + Step_pure [(.VCONST .V128 c_1), (.VBITMASK sh)] [(.CONST .I32 c)] + | vswizzlop : forall (c_1 : vec_) (c_2 : vec_) (sh : bshape) (swizzlop : vswizzlop_) (c : vec_) (var_0 : vec_), + (fun_vswizzlop_ sh swizzlop c_1 c_2 var_0) -> + (wf_vswizzlop_ sh swizzlop) -> + (c == var_0) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VSWIZZLOP sh swizzlop)] [(.VCONST .V128 c)] + | vshuffle : forall (c_1 : vec_) (c_2 : vec_) (sh : bshape) (i_lst : (List laneidx)) (c : vec_) (var_0 : vec_), + (fun_vshufflop_ sh i_lst c_1 c_2 var_0) -> + (c == var_0) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VSHUFFLE sh i_lst)] [(.VCONST .V128 c)] + | vsplat : forall (v_Lnn : Lnn) (c_1 : num_) (v_M : M) (c : vec_) (var_0 : lane_), + (fun_lpacknum_ v_Lnn c_1 var_0) -> + (wf_num_ (lunpack v_Lnn) c_1) -> + (c == (inv_lanes_ (.X v_Lnn (.mk_dim v_M)) (List.replicate v_M var_0))) -> + Step_pure [(.CONST (lunpack v_Lnn) c_1), (.VSPLAT (.X v_Lnn (.mk_dim v_M)))] [(.VCONST .V128 c)] + | vextract_lane_num : forall (c_1 : vec_) (nt : numtype) (v_M : M) (i : laneidx) (c_2 : num_), + (wf_lane_ (fun_lanetype (.X (lanetype_numtype nt) (.mk_dim v_M))) (.mk_lane__0 nt c_2)) -> + ((proj_uN_0 i) < (List.length (lanes_ (.X (lanetype_numtype nt) (.mk_dim v_M)) c_1))) -> + ((.mk_lane__0 nt c_2) == ((lanes_ (.X (lanetype_numtype nt) (.mk_dim v_M)) c_1)[(proj_uN_0 i)]!)) -> + Step_pure [(.VCONST .V128 c_1), (.VEXTRACT_LANE (.X (lanetype_numtype nt) (.mk_dim v_M)) none i)] [(.CONST nt c_2)] + | vextract_lane_pack : forall (c_1 : vec_) (pt : packtype) (v_M : M) (v_sx : sx) (i : laneidx) (c_2 : num_), + (wf_num_ .I32 c_2) -> + ((proj_num__0 c_2) != none) -> + ((proj_lane__1 ((lanes_ (.X (lanetype_packtype pt) (.mk_dim v_M)) c_1)[(proj_uN_0 i)]!)) != none) -> + ((proj_uN_0 i) < (List.length (lanes_ (.X (lanetype_packtype pt) (.mk_dim v_M)) c_1))) -> + ((Option.get! (proj_num__0 c_2)) == (extend__ (psize pt) 32 v_sx (Option.get! (proj_lane__1 ((lanes_ (.X (lanetype_packtype pt) (.mk_dim v_M)) c_1)[(proj_uN_0 i)]!))))) -> + Step_pure [(.VCONST .V128 c_1), (.VEXTRACT_LANE (.X (lanetype_packtype pt) (.mk_dim v_M)) (some v_sx) i)] [(.CONST .I32 c_2)] + | vreplace_lane : forall (c_1 : vec_) (v_Lnn : Lnn) (c_2 : num_) (v_M : M) (i : laneidx) (c : vec_) (var_0 : lane_), + (fun_lpacknum_ v_Lnn c_2 var_0) -> + (wf_num_ (lunpack v_Lnn) c_2) -> + (c == (inv_lanes_ (.X v_Lnn (.mk_dim v_M)) (List.modify (lanes_ (.X v_Lnn (.mk_dim v_M)) c_1) (proj_uN_0 i) (fun (_ : lane_) => var_0)))) -> + Step_pure [(.VCONST .V128 c_1), (.CONST (lunpack v_Lnn) c_2), (.VREPLACE_LANE (.X v_Lnn (.mk_dim v_M)) i)] [(.VCONST .V128 c)] + | vextunop : forall (c_1 : vec_) (sh_2 : ishape) (sh_1 : ishape) (vextunop : vextunop__) (c : vec_) (var_0 : vec_), + (fun_vextunop__ sh_1 sh_2 vextunop c_1 var_0) -> + (wf_vextunop__ sh_1 sh_2 vextunop) -> + (var_0 == c) -> + Step_pure [(.VCONST .V128 c_1), (.VEXTUNOP sh_2 sh_1 vextunop)] [(.VCONST .V128 c)] + | vextbinop : forall (c_1 : vec_) (c_2 : vec_) (sh_2 : ishape) (sh_1 : ishape) (vextbinop : vextbinop__) (c : vec_) (var_0 : vec_), + (fun_vextbinop__ sh_1 sh_2 vextbinop c_1 c_2 var_0) -> + (wf_vextbinop__ sh_1 sh_2 vextbinop) -> + (var_0 == c) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VEXTBINOP sh_2 sh_1 vextbinop)] [(.VCONST .V128 c)] + | vextternop : forall (c_1 : vec_) (c_2 : vec_) (c_3 : vec_) (sh_2 : ishape) (sh_1 : ishape) (vextternop : vextternop__) (c : vec_) (var_0 : vec_), + (fun_vextternop__ sh_1 sh_2 vextternop c_1 c_2 c_3 var_0) -> + (wf_vextternop__ sh_1 sh_2 vextternop) -> + (var_0 == c) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VCONST .V128 c_3), (.VEXTTERNOP sh_2 sh_1 vextternop)] [(.VCONST .V128 c)] + | vnarrow : forall (c_1 : vec_) (c_2 : vec_) (sh_2 : ishape) (sh_1 : ishape) (v_sx : sx) (c : vec_) (var_0 : vec_), + (fun_vnarrowop__ (proj_ishape_0 sh_1) (proj_ishape_0 sh_2) v_sx c_1 c_2 var_0) -> + (c == var_0) -> + Step_pure [(.VCONST .V128 c_1), (.VCONST .V128 c_2), (.VNARROW sh_2 sh_1 v_sx)] [(.VCONST .V128 c)] + | vcvtop : forall (c_1 : vec_) (sh_2 : shape) (sh_1 : shape) (vcvtop : vcvtop__) (c : vec_) (var_0 : vec_), + (fun_vcvtop__ sh_1 sh_2 vcvtop c_1 var_0) -> + (wf_vcvtop__ sh_1 sh_2 vcvtop) -> + (c == var_0) -> + Step_pure [(.VCONST .V128 c_1), (.VCVTOP sh_2 sh_1 vcvtop)] [(.VCONST .V128 c)] + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:69.6-69.17 -/ +inductive fun_blocktype_ : state -> blocktype -> instrtype -> Prop where + | fun_blocktype__case_0 : forall (z : state) (x : uN) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + (Expand (fun_type z x) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + fun_blocktype_ z (._IDX x) (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst)) + | fun_blocktype__case_1 : forall (z : state) (t_opt : (Option valtype)), fun_blocktype_ z (._RESULT t_opt) (.mk_instrtype (.mk_list []) [] (.mk_list (Option.toList t_opt))) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:151.1-153.15 -/ +inductive Step_read_before_br_on_cast_fail : config -> Prop where + | br_on_cast_succeed_0 : forall (s : store) (f : frame) (v_ref : ref) (l : labelidx) (rt_1 : reftype) (rt_2 : reftype) (rt : reftype) (var_0 : reftype), + (fun_inst_reftype (f.MODULE) rt_2 var_0) -> + (Ref_ok s v_ref rt) -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt var_0) -> + Step_read_before_br_on_cast_fail (.mk_config (.mk_state s f) [(instr_ref v_ref), (.BR_ON_CAST l rt_1 rt_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:162.1-164.15 -/ +inductive Step_read_before_br_on_cast_fail_fail : config -> Prop where + | br_on_cast_fail_succeed_0 : forall (s : store) (f : frame) (v_ref : ref) (l : labelidx) (rt_1 : reftype) (rt_2 : reftype) (rt : reftype) (var_0 : reftype), + (fun_inst_reftype (f.MODULE) rt_2 var_0) -> + (Ref_ok s v_ref rt) -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt var_0) -> + Step_read_before_br_on_cast_fail_fail (.mk_config (.mk_state s f) [(instr_ref v_ref), (.BR_ON_CAST_FAIL l rt_1 rt_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:357.1-360.14 -/ +inductive Step_read_before_table_fill_zero : config -> Prop where + | table_fill_oob_0 : forall (z : state) («at» : addrtype) (i : num_) (v_val : val) (v_n : n) (x : idx), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_table z x).REFS))) -> + Step_read_before_table_fill_zero (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.TABLE_FILL x)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:374.1-377.14 -/ +inductive Step_read_before_table_copy_zero : config -> Prop where + | table_copy_oob_0 : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length ((fun_table z x_1).REFS))) || (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length ((fun_table z x_2).REFS)))) -> + Step_read_before_table_copy_zero (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.TABLE_COPY x_1 x_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:379.1-384.19 -/ +inductive Step_read_before_table_copy_le : config -> Prop where + | table_copy_zero_0 : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x : idx) (y : idx), + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + (¬(Step_read_before_table_copy_zero (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.TABLE_COPY x y)]))) -> + (v_n == 0) -> + Step_read_before_table_copy_le (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.TABLE_COPY x y)]) + | table_copy_oob_1 : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length ((fun_table z x_1).REFS))) || (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length ((fun_table z x_2).REFS)))) -> + Step_read_before_table_copy_le (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.TABLE_COPY x_1 x_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:398.1-401.14 -/ +inductive Step_read_before_table_init_zero : config -> Prop where + | table_init_oob_0 : forall (z : state) («at» : addrtype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + ((proj_num__0 j) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_table z x).REFS))) || (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) > (List.length ((fun_elem z y).REFS)))) -> + Step_read_before_table_init_zero (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.TABLE_INIT x y)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:559.1-562.14 -/ +inductive Step_read_before_memory_fill_zero : config -> Prop where + | memory_fill_oob_0 : forall (z : state) («at» : addrtype) (i : num_) (v_val : val) (v_n : n) (x : idx), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_mem z x).BYTES))) -> + Step_read_before_memory_fill_zero (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.MEMORY_FILL x)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:576.1-579.14 -/ +inductive Step_read_before_memory_copy_zero : config -> Prop where + | memory_copy_oob_0 : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length ((fun_mem z x_1).BYTES))) || (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length ((fun_mem z x_2).BYTES)))) -> + Step_read_before_memory_copy_zero (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.MEMORY_COPY x_1 x_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:581.1-586.19 -/ +inductive Step_read_before_memory_copy_le : config -> Prop where + | memory_copy_zero_0 : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + (¬(Step_read_before_memory_copy_zero (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.MEMORY_COPY x_1 x_2)]))) -> + (v_n == 0) -> + Step_read_before_memory_copy_le (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.MEMORY_COPY x_1 x_2)]) + | memory_copy_oob_1 : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length ((fun_mem z x_1).BYTES))) || (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length ((fun_mem z x_2).BYTES)))) -> + Step_read_before_memory_copy_le (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.MEMORY_COPY x_1 x_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:600.1-603.14 -/ +inductive Step_read_before_memory_init_zero : config -> Prop where + | memory_init_oob_0 : forall (z : state) («at» : addrtype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + ((proj_num__0 j) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_mem z x).BYTES))) || (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) > (List.length ((fun_data z y).BYTES)))) -> + Step_read_before_memory_init_zero (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.MEMORY_INIT x y)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:666.1-668.15 -/ +inductive Step_read_before_ref_test_false : config -> Prop where + | ref_test_true_0 : forall (s : store) (f : frame) (v_ref : ref) (rt : reftype) (rt' : reftype) (var_0 : reftype), + (fun_inst_reftype (f.MODULE) rt var_0) -> + (Ref_ok s v_ref rt') -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt' var_0) -> + Step_read_before_ref_test_false (.mk_config (.mk_state s f) [(instr_ref v_ref), (.REF_TEST rt)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:677.1-679.15 -/ +inductive Step_read_before_ref_cast_fail : config -> Prop where + | ref_cast_succeed_0 : forall (s : store) (f : frame) (v_ref : ref) (rt : reftype) (rt' : reftype) (var_0 : reftype), + (fun_inst_reftype (f.MODULE) rt var_0) -> + (Ref_ok s v_ref rt') -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt' var_0) -> + Step_read_before_ref_cast_fail (.mk_config (.mk_state s f) [(instr_ref v_ref), (.REF_CAST rt)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:805.1-808.14 -/ +inductive Step_read_before_array_fill_zero : config -> Prop where + | array_fill_oob_0 : forall (z : state) (a : addr) (i : num_) (v_val : val) (v_n : n) (x : idx), + (wf_num_ .I32 i) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step_read_before_array_fill_zero (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (instr_val v_val), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_FILL x)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:832.1-836.14 -/ +inductive Step_read_before_array_copy_zero : config -> Prop where + | array_copy_oob2_0 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + ((proj_num__0 i_2) != none) -> + (a_2 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length (((fun_arrayinst z)[a_2]!).FIELDS))) -> + Step_read_before_array_copy_zero (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + | array_copy_oob1_0 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + ((proj_num__0 i_1) != none) -> + (a_1 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length (((fun_arrayinst z)[a_1]!).FIELDS))) -> + Step_read_before_array_copy_zero (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:838.1-848.24 -/ +inductive Step_read_before_array_copy_le : config -> Prop where + | array_copy_zero_0 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + (¬(Step_read_before_array_copy_zero (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]))) -> + (v_n == 0) -> + Step_read_before_array_copy_le (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + | array_copy_oob2_1 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + ((proj_num__0 i_2) != none) -> + (a_2 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length (((fun_arrayinst z)[a_2]!).FIELDS))) -> + Step_read_before_array_copy_le (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + | array_copy_oob1_1 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + ((proj_num__0 i_1) != none) -> + (a_1 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length (((fun_arrayinst z)[a_1]!).FIELDS))) -> + Step_read_before_array_copy_le (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:850.1-859.24 -/ +inductive Step_read_before_array_copy_gt : config -> Prop where + | array_copy_le_0 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx) (sx_opt : (Option sx)) (mut_opt : (Option «mut»)) (zt_2 : storagetype), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + (¬(Step_read_before_array_copy_le (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]))) -> + (Expand (fun_type z x_2) (.ARRAY (.mk_fieldtype mut_opt zt_2))) -> + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_1))) <= (proj_uN_0 (Option.get! (proj_num__0 i_2)))) && (sx_opt == (fun_sx zt_2))) -> + Step_read_before_array_copy_gt (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + | array_copy_zero_1 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + (¬(Step_read_before_array_copy_zero (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]))) -> + (v_n == 0) -> + Step_read_before_array_copy_gt (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + | array_copy_oob2_2 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + ((proj_num__0 i_2) != none) -> + (a_2 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length (((fun_arrayinst z)[a_2]!).FIELDS))) -> + Step_read_before_array_copy_gt (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + | array_copy_oob1_2 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + ((proj_num__0 i_1) != none) -> + (a_1 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length (((fun_arrayinst z)[a_1]!).FIELDS))) -> + Step_read_before_array_copy_gt (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:875.1-879.14 -/ +inductive Step_read_before_array_init_elem_zero : config -> Prop where + | array_init_elem_oob2_0 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 j) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) > (List.length ((fun_elem z y).REFS))) -> + Step_read_before_array_init_elem_zero (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_ELEM x y)]) + | array_init_elem_oob1_0 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step_read_before_array_init_elem_zero (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_ELEM x y)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:904.1-908.14 -/ +inductive Step_read_before_array_init_data_zero : config -> Prop where + | array_init_data_oob2_0 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx) (mut_opt : (Option «mut»)) (zt : storagetype), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((proj_num__0 j) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 j))) + ((((v_n * (zsize zt)) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_data z y).BYTES))) -> + Step_read_before_array_init_data_zero (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) + | array_init_data_oob1_0 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step_read_before_array_init_data_zero (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:911.1-918.62 -/ +inductive Step_read_before_array_init_data_num : config -> Prop where + | array_init_data_zero_0 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + (¬(Step_read_before_array_init_data_zero (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]))) -> + (v_n == 0) -> + Step_read_before_array_init_data_num (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) + | array_init_data_oob2_1 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx) (mut_opt : (Option «mut»)) (zt : storagetype), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((proj_num__0 j) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 j))) + ((((v_n * (zsize zt)) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_data z y).BYTES))) -> + Step_read_before_array_init_data_num (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) + | array_init_data_oob1_1 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step_read_before_array_init_data_num (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:7.1-7.88 -/ +inductive Step_read : config -> (List instr) -> Prop where + | block : forall (z : state) (val_lst : (List val)) (v_m : m) (bt : blocktype) (instr_lst : (List instr)) (v_n : n) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (var_0 : instrtype), + (fun_blocktype_ z bt var_0) -> + (var_0 == (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + Step_read (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.BLOCK bt instr_lst)])) [(.LABEL_ v_n [] ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ instr_lst))] + | loop : forall (z : state) (val_lst : (List val)) (v_m : m) (bt : blocktype) (instr_lst : (List instr)) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (v_n : n) (var_0 : instrtype), + (fun_blocktype_ z bt var_0) -> + (var_0 == (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + Step_read (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.LOOP bt instr_lst)])) [(.LABEL_ v_m [(.LOOP bt instr_lst)] ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ instr_lst))] + | br_on_cast_succeed : forall (s : store) (f : frame) (v_ref : ref) (l : labelidx) (rt_1 : reftype) (rt_2 : reftype) (rt : reftype) (var_0 : reftype), + (fun_inst_reftype (f.MODULE) rt_2 var_0) -> + (Ref_ok s v_ref rt) -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt var_0) -> + Step_read (.mk_config (.mk_state s f) [(instr_ref v_ref), (.BR_ON_CAST l rt_1 rt_2)]) [(instr_ref v_ref), (.BR l)] + | br_on_cast_fail : forall (s : store) (f : frame) (v_ref : ref) (l : labelidx) (rt_1 : reftype) (rt_2 : reftype), + (¬(Step_read_before_br_on_cast_fail (.mk_config (.mk_state s f) [(instr_ref v_ref), (.BR_ON_CAST l rt_1 rt_2)]))) -> + Step_read (.mk_config (.mk_state s f) [(instr_ref v_ref), (.BR_ON_CAST l rt_1 rt_2)]) [(instr_ref v_ref)] + | br_on_cast_fail_succeed : forall (s : store) (f : frame) (v_ref : ref) (l : labelidx) (rt_1 : reftype) (rt_2 : reftype) (rt : reftype) (var_0 : reftype), + (fun_inst_reftype (f.MODULE) rt_2 var_0) -> + (Ref_ok s v_ref rt) -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt var_0) -> + Step_read (.mk_config (.mk_state s f) [(instr_ref v_ref), (.BR_ON_CAST_FAIL l rt_1 rt_2)]) [(instr_ref v_ref)] + | br_on_cast_fail_fail : forall (s : store) (f : frame) (v_ref : ref) (l : labelidx) (rt_1 : reftype) (rt_2 : reftype), + (¬(Step_read_before_br_on_cast_fail_fail (.mk_config (.mk_state s f) [(instr_ref v_ref), (.BR_ON_CAST_FAIL l rt_1 rt_2)]))) -> + Step_read (.mk_config (.mk_state s f) [(instr_ref v_ref), (.BR_ON_CAST_FAIL l rt_1 rt_2)]) [(instr_ref v_ref), (.BR l)] + | call : forall (z : state) (x : idx) (a : addr), + (a < (List.length (fun_funcinst z))) -> + ((proj_uN_0 x) < (List.length ((fun_moduleinst z).FUNCS))) -> + ((((fun_moduleinst z).FUNCS)[(proj_uN_0 x)]!) == a) -> + Step_read (.mk_config z [(.CALL x)]) [(.REF_FUNC_ADDR a), (.CALL_REF (typeuse_deftype (((fun_funcinst z)[a]!).TYPE)))] + | call_ref_null : forall (z : state) (ht : heaptype) (yy : typeuse), Step_read (.mk_config z [(.REF_NULL ht), (.CALL_REF yy)]) [.TRAP] + | call_ref_func : forall (z : state) (val_lst : (List val)) (v_n : n) (a : addr) (yy : typeuse) (v_m : m) (f : frame) (instr_lst : (List instr)) (fi : funcinst) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (x : idx) (t_lst : (List valtype)), + (a < (List.length (fun_funcinst z))) -> + (((fun_funcinst z)[a]!) == fi) -> + (Expand (fi.TYPE) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + ((fi.CODE) == (.FUNC x (List.map (fun (t : valtype) => (.LOCAL t)) t_lst) instr_lst)) -> + (f == { LOCALS := ((List.map (fun (v_val : val) => (some v_val)) val_lst) ++ (List.map (fun (t : valtype) => (default_ t)) t_lst)), MODULE := (fi.MODULE) }) -> + Step_read (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.REF_FUNC_ADDR a), (.CALL_REF yy)])) [(.FRAME_ v_m f [(.LABEL_ v_m [] instr_lst)])] + | return_call : forall (z : state) (x : idx) (a : addr), + (a < (List.length (fun_funcinst z))) -> + ((proj_uN_0 x) < (List.length ((fun_moduleinst z).FUNCS))) -> + ((((fun_moduleinst z).FUNCS)[(proj_uN_0 x)]!) == a) -> + Step_read (.mk_config z [(.RETURN_CALL x)]) [(.REF_FUNC_ADDR a), (.RETURN_CALL_REF (typeuse_deftype (((fun_funcinst z)[a]!).TYPE)))] + | return_call_ref_label : forall (z : state) (k : n) (instr'_lst : (List instr)) (val_lst : (List val)) (yy : typeuse) (instr_lst : (List instr)), Step_read (.mk_config z [(.LABEL_ k instr'_lst ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([(.RETURN_CALL_REF yy)] ++ instr_lst)))]) ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.RETURN_CALL_REF yy)]) + | return_call_ref_handler : forall (z : state) (k : n) (catch_lst : (List «catch»)) (val_lst : (List val)) (yy : typeuse) (instr_lst : (List instr)), Step_read (.mk_config z [(.HANDLER_ k catch_lst ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([(.RETURN_CALL_REF yy)] ++ instr_lst)))]) ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.RETURN_CALL_REF yy)]) + | return_call_ref_frame_null : forall (z : state) (k : n) (f : frame) (val_lst : (List val)) (ht : heaptype) (yy : typeuse) (instr_lst : (List instr)), Step_read (.mk_config z [(.FRAME_ k f ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([(.REF_NULL ht)] ++ ([(.RETURN_CALL_REF yy)] ++ instr_lst))))]) [.TRAP] + | return_call_ref_frame_addr : forall (z : state) (k : n) (f : frame) (val'_lst : (List val)) (val_lst : (List val)) (v_n : n) (a : addr) (yy : typeuse) (instr_lst : (List instr)) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (v_m : m), + (a < (List.length (fun_funcinst z))) -> + (Expand (((fun_funcinst z)[a]!).TYPE) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + Step_read (.mk_config z [(.FRAME_ k f ((List.map (fun (val' : val) => (instr_val val')) val'_lst) ++ ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([(.REF_FUNC_ADDR a)] ++ ([(.RETURN_CALL_REF yy)] ++ instr_lst)))))]) ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.REF_FUNC_ADDR a), (.CALL_REF yy)]) + | throw_ref_null : forall (z : state) (ht : heaptype), Step_read (.mk_config z [(.REF_NULL ht), .THROW_REF]) [.TRAP] + | throw_ref_instrs : forall (z : state) (val_lst : (List val)) (a : addr) (instr_lst : (List instr)), + ((val_lst != []) || (instr_lst != [])) -> + Step_read (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ ([(.REF_EXN_ADDR a)] ++ ([.THROW_REF] ++ instr_lst)))) [(.REF_EXN_ADDR a), .THROW_REF] + | throw_ref_label : forall (z : state) (v_n : n) (instr'_lst : (List instr)) (a : addr), Step_read (.mk_config z [(.LABEL_ v_n instr'_lst [(.REF_EXN_ADDR a), .THROW_REF])]) [(.REF_EXN_ADDR a), .THROW_REF] + | throw_ref_frame : forall (z : state) (v_n : n) (f : frame) (a : addr), Step_read (.mk_config z [(.FRAME_ v_n f [(.REF_EXN_ADDR a), .THROW_REF])]) [(.REF_EXN_ADDR a), .THROW_REF] + | throw_ref_handler_empty : forall (z : state) (v_n : n) (a : addr), Step_read (.mk_config z [(.HANDLER_ v_n [] [(.REF_EXN_ADDR a), .THROW_REF])]) [(.REF_EXN_ADDR a), .THROW_REF] + | throw_ref_handler_catch : forall (z : state) (v_n : n) (x : idx) (l : labelidx) (catch'_lst : (List «catch»)) (a : addr) (val_lst : (List val)), + (a < (List.length (fun_exninst z))) -> + ((proj_uN_0 x) < (List.length (fun_tagaddr z))) -> + ((((fun_exninst z)[a]!).TAG) == ((fun_tagaddr z)[(proj_uN_0 x)]!)) -> + (val_lst == (((fun_exninst z)[a]!).FIELDS)) -> + Step_read (.mk_config z [(.HANDLER_ v_n ([(.CATCH x l)] ++ catch'_lst) [(.REF_EXN_ADDR a), .THROW_REF])]) ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.BR l)]) + | throw_ref_handler_catch_ref : forall (z : state) (v_n : n) (x : idx) (l : labelidx) (catch'_lst : (List «catch»)) (a : addr) (val_lst : (List val)), + (a < (List.length (fun_exninst z))) -> + ((proj_uN_0 x) < (List.length (fun_tagaddr z))) -> + ((((fun_exninst z)[a]!).TAG) == ((fun_tagaddr z)[(proj_uN_0 x)]!)) -> + (val_lst == (((fun_exninst z)[a]!).FIELDS)) -> + Step_read (.mk_config z [(.HANDLER_ v_n ([(.CATCH_REF x l)] ++ catch'_lst) [(.REF_EXN_ADDR a), .THROW_REF])]) ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.REF_EXN_ADDR a), (.BR l)]) + | throw_ref_handler_catch_all : forall (z : state) (v_n : n) (l : labelidx) (catch'_lst : (List «catch»)) (a : addr), Step_read (.mk_config z [(.HANDLER_ v_n ([(.CATCH_ALL l)] ++ catch'_lst) [(.REF_EXN_ADDR a), .THROW_REF])]) [(.BR l)] + | throw_ref_handler_catch_all_ref : forall (z : state) (v_n : n) (l : labelidx) (catch'_lst : (List «catch»)) (a : addr), Step_read (.mk_config z [(.HANDLER_ v_n ([(.CATCH_ALL_REF l)] ++ catch'_lst) [(.REF_EXN_ADDR a), .THROW_REF])]) [(.REF_EXN_ADDR a), (.BR l)] + | throw_ref_handler_next : forall (z : state) (v_n : n) (v_catch : «catch») (catch'_lst : (List «catch»)) (a : addr) (x : idx) (val_lst : (List val)) (x : idx) (val_lst : (List val)), + (a < (List.length (fun_exninst z))) -> + ((proj_uN_0 x) < (List.length (fun_tagaddr z))) -> + (((((fun_exninst z)[a]!).TAG) != ((fun_tagaddr z)[(proj_uN_0 x)]!)) || (val_lst != (((fun_exninst z)[a]!).FIELDS))) -> + Step_read (.mk_config z [(.HANDLER_ v_n ([v_catch] ++ catch'_lst) [(.REF_EXN_ADDR a), .THROW_REF])]) [(.HANDLER_ v_n catch'_lst [(.REF_EXN_ADDR a), .THROW_REF])] + | try_table : forall (z : state) (val_lst : (List val)) (v_m : m) (bt : blocktype) (catch_lst : (List «catch»)) (instr_lst : (List instr)) (v_n : n) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)) (var_0 : instrtype), + (fun_blocktype_ z bt var_0) -> + (var_0 == (.mk_instrtype (.mk_list t_1_lst) [] (.mk_list t_2_lst))) -> + Step_read (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.TRY_TABLE bt (.mk_list catch_lst) instr_lst)])) [(.HANDLER_ v_n catch_lst [(.LABEL_ v_n [] ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ instr_lst))])] + | local_get : forall (z : state) (x : idx) (v_val : val), + ((fun_local z x) == (some v_val)) -> + Step_read (.mk_config z [(.LOCAL_GET x)]) [(instr_val v_val)] + | global_get : forall (z : state) (x : idx) (v_val : val), + (((fun_global z x).VALUE) == v_val) -> + Step_read (.mk_config z [(.GLOBAL_GET x)]) [(instr_val v_val)] + | table_get_oob : forall (z : state) («at» : addrtype) (i : num_) (x : idx), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 i))) >= (List.length ((fun_table z x).REFS))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.TABLE_GET x)]) [.TRAP] + | table_get_val : forall (z : state) («at» : addrtype) (i : num_) (x : idx), + ((proj_uN_0 (Option.get! (proj_num__0 i))) < (List.length ((fun_table z x).REFS))) -> + ((proj_num__0 i) != none) -> + (wf_num_ (numtype_addrtype «at») i) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.TABLE_GET x)]) [(instr_ref (((fun_table z x).REFS)[(proj_uN_0 (Option.get! (proj_num__0 i)))]!))] + | table_size : forall (z : state) (x : idx) («at» : addrtype) (v_n : n) (lim : limits) (rt : reftype), + ((List.length ((fun_table z x).REFS)) == v_n) -> + (((fun_table z x).TYPE) == (.mk_tabletype «at» lim rt)) -> + Step_read (.mk_config z [(.TABLE_SIZE x)]) [(.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n)))] + | table_fill_oob : forall (z : state) («at» : addrtype) (i : num_) (v_val : val) (v_n : n) (x : idx), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_table z x).REFS))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.TABLE_FILL x)]) [.TRAP] + | table_fill_zero : forall (z : state) («at» : addrtype) (i : num_) (v_val : val) (v_n : n) (x : idx), + ((proj_num__0 i) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length ((fun_table z x).REFS))) -> + (wf_num_ (numtype_addrtype «at») i) -> + (v_n == 0) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.TABLE_FILL x)]) [] + | table_fill_succ : forall (z : state) («at» : addrtype) (i : num_) (v_val : val) (v_n : n) (x : idx), + ((proj_num__0 i) != none) -> + (v_n != 0) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length ((fun_table z x).REFS))) -> + (wf_num_ (numtype_addrtype «at») i) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.TABLE_FILL x)]) [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.TABLE_SET x), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i))) + 1)))), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.TABLE_FILL x)] + | table_copy_oob : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length ((fun_table z x_1).REFS))) || (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length ((fun_table z x_2).REFS)))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.TABLE_COPY x_1 x_2)]) [.TRAP] + | table_copy_zero : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x : idx) (y : idx) (x_1 : idx) (x_2 : idx), + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) <= (List.length ((fun_table z x_1).REFS))) && (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) <= (List.length ((fun_table z x_2).REFS)))) -> + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + (v_n == 0) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.TABLE_COPY x y)]) [] + | table_copy_le : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x : idx) (y : idx) (x_1 : idx) (x_2 : idx), + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + (v_n != 0) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) <= (List.length ((fun_table z x_1).REFS))) && (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) <= (List.length ((fun_table z x_2).REFS)))) -> + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + ((proj_uN_0 (Option.get! (proj_num__0 i_1))) <= (proj_uN_0 (Option.get! (proj_num__0 i_2)))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.TABLE_COPY x y)]) [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.TABLE_GET y), (.TABLE_SET x), (.CONST (numtype_addrtype at_1) (.mk_num__0 at_1 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i_1))) + 1)))), (.CONST (numtype_addrtype at_2) (.mk_num__0 at_2 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i_2))) + 1)))), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.TABLE_COPY x y)] + | table_copy_gt : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x : idx) (y : idx) (x_1 : idx) (x_2 : idx), + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 i_1))) > (proj_uN_0 (Option.get! (proj_num__0 i_2)))) -> + (v_n != 0) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) <= (List.length ((fun_table z x_1).REFS))) && (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) <= (List.length ((fun_table z x_2).REFS)))) -> + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.TABLE_COPY x y)]) [(.CONST (numtype_addrtype at_1) (.mk_num__0 at_1 (.mk_uN (((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) : Nat) - (1 : Nat)) : Nat)))), (.CONST (numtype_addrtype at_2) (.mk_num__0 at_2 (.mk_uN (((((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) : Nat) - (1 : Nat)) : Nat)))), (.TABLE_GET y), (.TABLE_SET x), (.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.TABLE_COPY x y)] + | table_init_oob : forall (z : state) («at» : addrtype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + ((proj_num__0 j) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_table z x).REFS))) || (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) > (List.length ((fun_elem z y).REFS)))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.TABLE_INIT x y)]) [.TRAP] + | table_init_zero : forall (z : state) («at» : addrtype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + ((proj_num__0 i) != none) -> + ((proj_num__0 j) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length ((fun_table z x).REFS))) && (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) <= (List.length ((fun_elem z y).REFS)))) -> + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ .I32 j) -> + (v_n == 0) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.TABLE_INIT x y)]) [] + | table_init_succ : forall (z : state) («at» : addrtype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + ((proj_uN_0 (Option.get! (proj_num__0 j))) < (List.length ((fun_elem z y).REFS))) -> + ((proj_num__0 j) != none) -> + ((proj_num__0 i) != none) -> + (v_n != 0) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length ((fun_table z x).REFS))) && (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) <= (List.length ((fun_elem z y).REFS)))) -> + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ .I32 j) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.TABLE_INIT x y)]) [(.CONST (numtype_addrtype «at») i), (instr_ref (((fun_elem z y).REFS)[(proj_uN_0 (Option.get! (proj_num__0 j)))]!)), (.TABLE_SET x), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i))) + 1)))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 j))) + 1)))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.TABLE_INIT x y)] + | load_num_oob : forall (z : state) («at» : addrtype) (i : num_) (nt : numtype) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + ((((size nt) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.LOAD nt none x ao)]) [.TRAP] + | load_num_val : forall (z : state) («at» : addrtype) (i : num_) (nt : numtype) (x : idx) (ao : memarg) (c : num_), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ nt c) -> + ((proj_num__0 i) != none) -> + ((nbytes_ nt c) == (List.extract ((fun_mem z x).BYTES) ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) ((((size nt) : Nat) / (8 : Nat)) : Nat))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.LOAD nt none x ao)]) [(.CONST nt c)] + | load_pack_oob : forall (z : state) («at» : addrtype) (i : num_) (v_Inn : Inn) (v_n : n) (v_sx : sx) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + (((v_n : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.LOAD (numtype_addrtype v_Inn) (some (.mk_loadop__0 v_Inn (.mk_loadop_Inn (.mk_sz v_n) v_sx))) x ao)]) [.TRAP] + | load_pack_val : forall (z : state) («at» : addrtype) (i : num_) (v_Inn : Inn) (v_n : n) (v_sx : sx) (x : idx) (ao : memarg) (c : iN), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((ibytes_ v_n c) == (List.extract ((fun_mem z x).BYTES) ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) (((v_n : Nat) / (8 : Nat)) : Nat))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.LOAD (numtype_addrtype v_Inn) (some (.mk_loadop__0 v_Inn (.mk_loadop_Inn (.mk_sz v_n) v_sx))) x ao)]) [(.CONST (numtype_addrtype v_Inn) (.mk_num__0 v_Inn (extend__ v_n (size (numtype_addrtype v_Inn)) v_sx c)))] + | vload_oob : forall (z : state) («at» : addrtype) (i : num_) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + ((((vsize .V128) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VLOAD .V128 none x ao)]) [.TRAP] + | vload_val : forall (z : state) («at» : addrtype) (i : num_) (x : idx) (ao : memarg) (c : vec_), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((vbytes_ .V128 c) == (List.extract ((fun_mem z x).BYTES) ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) ((((vsize .V128) : Nat) / (8 : Nat)) : Nat))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VLOAD .V128 none x ao)]) [(.VCONST .V128 c)] + | vload_pack_oob : forall (z : state) («at» : addrtype) (i : num_) (v_M : M) (v_K : K) (v_sx : sx) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + ((((v_M * v_K) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VLOAD .V128 (some (.SHAPEX_ (.mk_sz v_M) v_K v_sx)) x ao)]) [.TRAP] + | vload_pack_val : forall (z : state) («at» : addrtype) (i : num_) (v_M : M) (v_K : K) (v_sx : sx) (x : idx) (ao : memarg) (c : vec_) (j_lst : (List iN)) (k_lst : (List Nat)) (v_Jnn : Jnn), + (wf_num_ (numtype_addrtype «at») i) -> + Forall (fun (j : iN) => (wf_lane_ (fun_lanetype (.X (lanetype_Jnn v_Jnn) (.mk_dim v_K))) (.mk_lane__2 v_Jnn (extend__ v_M (jsizenn v_Jnn) v_sx j)))) j_lst -> + Forall (fun (j : iN) => ((proj_num__0 i) != none)) j_lst -> + Forall₂ (fun (j : iN) (k : Nat) => ((ibytes_ v_M j) == (List.extract ((fun_mem z x).BYTES) (((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + ((((k * v_M) : Nat) / (8 : Nat)) : Nat)) (((v_M : Nat) / (8 : Nat)) : Nat)))) j_lst k_lst -> + ((c == (inv_lanes_ (.X (lanetype_Jnn v_Jnn) (.mk_dim v_K)) (List.map (fun (j : iN) => (.mk_lane__2 v_Jnn (extend__ v_M (jsizenn v_Jnn) v_sx j))) j_lst))) && ((jsizenn v_Jnn) == (v_M * 2))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VLOAD .V128 (some (.SHAPEX_ (.mk_sz v_M) v_K v_sx)) x ao)]) [(.VCONST .V128 c)] + | vload_splat_oob : forall (z : state) («at» : addrtype) (i : num_) (v_N : N) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + (((v_N : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VLOAD .V128 (some (.SPLAT (.mk_sz v_N))) x ao)]) [.TRAP] + | vload_splat_val : forall (z : state) («at» : addrtype) (i : num_) (v_N : N) (x : idx) (ao : memarg) (c : vec_) (j : iN) (v_Jnn : Jnn) (v_M : M), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_lane__2 v_Jnn (.mk_uN (proj_uN_0 j)))) -> + ((proj_num__0 i) != none) -> + ((ibytes_ v_N j) == (List.extract ((fun_mem z x).BYTES) ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) (((v_N : Nat) / (8 : Nat)) : Nat))) -> + (v_N == (jsize v_Jnn)) -> + ((v_M : Nat) == ((128 : Nat) / (v_N : Nat))) -> + (c == (inv_lanes_ (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)) (List.replicate v_M (.mk_lane__2 v_Jnn (.mk_uN (proj_uN_0 j)))))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VLOAD .V128 (some (.SPLAT (.mk_sz v_N))) x ao)]) [(.VCONST .V128 c)] + | vload_zero_oob : forall (z : state) («at» : addrtype) (i : num_) (v_N : N) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + (((v_N : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VLOAD .V128 (some (.ZERO (.mk_sz v_N))) x ao)]) [.TRAP] + | vload_zero_val : forall (z : state) («at» : addrtype) (i : num_) (v_N : N) (x : idx) (ao : memarg) (c : vec_) (j : iN), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((ibytes_ v_N j) == (List.extract ((fun_mem z x).BYTES) ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) (((v_N : Nat) / (8 : Nat)) : Nat))) -> + (c == (extend__ v_N 128 .U j)) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VLOAD .V128 (some (.ZERO (.mk_sz v_N))) x ao)]) [(.VCONST .V128 c)] + | vload_lane_oob : forall (z : state) («at» : addrtype) (i : num_) (c_1 : vec_) (v_N : N) (x : idx) (ao : memarg) (j : laneidx), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + (((v_N : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VCONST .V128 c_1), (.VLOAD_LANE .V128 (.mk_sz v_N) x ao j)]) [.TRAP] + | vload_lane_val : forall (z : state) («at» : addrtype) (i : num_) (c_1 : vec_) (v_N : N) (x : idx) (ao : memarg) (j : laneidx) (c : vec_) (k : iN) (v_Jnn : Jnn) (v_M : M), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_lane_ (fun_lanetype (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M))) (.mk_lane__2 v_Jnn (.mk_uN (proj_uN_0 k)))) -> + ((proj_num__0 i) != none) -> + ((ibytes_ v_N k) == (List.extract ((fun_mem z x).BYTES) ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) (((v_N : Nat) / (8 : Nat)) : Nat))) -> + (v_N == (jsize v_Jnn)) -> + ((v_M : Nat) == (((vsize .V128) : Nat) / (v_N : Nat))) -> + (c == (inv_lanes_ (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)) (List.modify (lanes_ (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)) c_1) (proj_uN_0 j) (fun (_ : lane_) => (.mk_lane__2 v_Jnn (.mk_uN (proj_uN_0 k))))))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VCONST .V128 c_1), (.VLOAD_LANE .V128 (.mk_sz v_N) x ao j)]) [(.VCONST .V128 c)] + | memory_size : forall (z : state) (x : idx) («at» : addrtype) (v_n : n) (lim : limits), + ((v_n * (64 * (Ki ))) == (List.length ((fun_mem z x).BYTES))) -> + (((fun_mem z x).TYPE) == (.PAGE «at» lim)) -> + Step_read (.mk_config z [(.MEMORY_SIZE x)]) [(.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n)))] + | memory_fill_oob : forall (z : state) («at» : addrtype) (i : num_) (v_val : val) (v_n : n) (x : idx), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_mem z x).BYTES))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.MEMORY_FILL x)]) [.TRAP] + | memory_fill_zero : forall (z : state) («at» : addrtype) (i : num_) (v_val : val) (v_n : n) (x : idx), + ((proj_num__0 i) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length ((fun_mem z x).BYTES))) -> + (wf_num_ (numtype_addrtype «at») i) -> + (v_n == 0) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.MEMORY_FILL x)]) [] + | memory_fill_succ : forall (z : state) («at» : addrtype) (i : num_) (v_val : val) (v_n : n) (x : idx), + ((proj_num__0 i) != none) -> + (v_n != 0) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length ((fun_mem z x).BYTES))) -> + (wf_num_ (numtype_addrtype «at») i) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.MEMORY_FILL x)]) [(.CONST (numtype_addrtype «at») i), (instr_val v_val), (.STORE .I32 (some (.mk_storeop__0 .I32 (.mk_storeop_Inn (.mk_sz 8)))) x (memarg0 )), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i))) + 1)))), (instr_val v_val), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.MEMORY_FILL x)] + | memory_copy_oob : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length ((fun_mem z x_1).BYTES))) || (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length ((fun_mem z x_2).BYTES)))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.MEMORY_COPY x_1 x_2)]) [.TRAP] + | memory_copy_zero : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) <= (List.length ((fun_mem z x_1).BYTES))) && (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) <= (List.length ((fun_mem z x_2).BYTES)))) -> + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + (v_n == 0) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.MEMORY_COPY x_1 x_2)]) [] + | memory_copy_le : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + (v_n != 0) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) <= (List.length ((fun_mem z x_1).BYTES))) && (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) <= (List.length ((fun_mem z x_2).BYTES)))) -> + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + ((proj_uN_0 (Option.get! (proj_num__0 i_1))) <= (proj_uN_0 (Option.get! (proj_num__0 i_2)))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.MEMORY_COPY x_1 x_2)]) [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.LOAD .I32 (some (.mk_loadop__0 .I32 (.mk_loadop_Inn (.mk_sz 8) .U))) x_2 (memarg0 )), (.STORE .I32 (some (.mk_storeop__0 .I32 (.mk_storeop_Inn (.mk_sz 8)))) x_1 (memarg0 )), (.CONST (numtype_addrtype at_1) (.mk_num__0 at_1 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i_1))) + 1)))), (.CONST (numtype_addrtype at_2) (.mk_num__0 at_2 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i_2))) + 1)))), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.MEMORY_COPY x_1 x_2)] + | memory_copy_gt : forall (z : state) (at_1 : addrtype) (i_1 : num_) (at_2 : addrtype) (i_2 : num_) (at' : addrtype) (v_n : n) (x_1 : idx) (x_2 : idx), + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 i_1))) > (proj_uN_0 (Option.get! (proj_num__0 i_2)))) -> + (v_n != 0) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) <= (List.length ((fun_mem z x_1).BYTES))) && (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) <= (List.length ((fun_mem z x_2).BYTES)))) -> + (wf_num_ (numtype_addrtype at_1) i_1) -> + (wf_num_ (numtype_addrtype at_2) i_2) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN v_n))), (.MEMORY_COPY x_1 x_2)]) [(.CONST (numtype_addrtype at_1) (.mk_num__0 at_1 (.mk_uN (((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) : Nat) - (1 : Nat)) : Nat)))), (.CONST (numtype_addrtype at_2) (.mk_num__0 at_2 (.mk_uN (((((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) : Nat) - (1 : Nat)) : Nat)))), (.LOAD .I32 (some (.mk_loadop__0 .I32 (.mk_loadop_Inn (.mk_sz 8) .U))) x_2 (memarg0 )), (.STORE .I32 (some (.mk_storeop__0 .I32 (.mk_storeop_Inn (.mk_sz 8)))) x_1 (memarg0 )), (.CONST (numtype_addrtype at_1) i_1), (.CONST (numtype_addrtype at_2) i_2), (.CONST (numtype_addrtype at') (.mk_num__0 at' (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.MEMORY_COPY x_1 x_2)] + | memory_init_oob : forall (z : state) («at» : addrtype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + ((proj_num__0 j) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_mem z x).BYTES))) || (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) > (List.length ((fun_data z y).BYTES)))) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.MEMORY_INIT x y)]) [.TRAP] + | memory_init_zero : forall (z : state) («at» : addrtype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + ((proj_num__0 i) != none) -> + ((proj_num__0 j) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length ((fun_mem z x).BYTES))) && (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) <= (List.length ((fun_data z y).BYTES)))) -> + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ .I32 j) -> + (v_n == 0) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.MEMORY_INIT x y)]) [] + | memory_init_succ : forall (z : state) («at» : addrtype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + ((proj_uN_0 (Option.get! (proj_num__0 j))) < (List.length ((fun_data z y).BYTES))) -> + ((proj_num__0 j) != none) -> + ((proj_num__0 i) != none) -> + (v_n != 0) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length ((fun_mem z x).BYTES))) && (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) <= (List.length ((fun_data z y).BYTES)))) -> + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ .I32 j) -> + Step_read (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.MEMORY_INIT x y)]) [(.CONST (numtype_addrtype «at») i), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (proj_byte_0 (((fun_data z y).BYTES)[(proj_uN_0 (Option.get! (proj_num__0 j)))]!))))), (.STORE .I32 (some (.mk_storeop__0 .I32 (.mk_storeop_Inn (.mk_sz 8)))) x (memarg0 )), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i))) + 1)))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 j))) + 1)))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.MEMORY_INIT x y)] + | ref_null_idx : forall (z : state) (x : idx), Step_read (.mk_config z [(.REF_NULL (._IDX x))]) [(.REF_NULL (heaptype_deftype (fun_type z x)))] + | ref_func : forall (z : state) (x : idx), + ((proj_uN_0 x) < (List.length ((fun_moduleinst z).FUNCS))) -> + Step_read (.mk_config z [(.REF_FUNC x)]) [(.REF_FUNC_ADDR (((fun_moduleinst z).FUNCS)[(proj_uN_0 x)]!))] + | ref_test_true : forall (s : store) (f : frame) (v_ref : ref) (rt : reftype) (rt' : reftype) (var_0 : reftype), + (fun_inst_reftype (f.MODULE) rt var_0) -> + (Ref_ok s v_ref rt') -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt' var_0) -> + Step_read (.mk_config (.mk_state s f) [(instr_ref v_ref), (.REF_TEST rt)]) [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 1)))] + | ref_test_false : forall (s : store) (f : frame) (v_ref : ref) (rt : reftype), + (¬(Step_read_before_ref_test_false (.mk_config (.mk_state s f) [(instr_ref v_ref), (.REF_TEST rt)]))) -> + Step_read (.mk_config (.mk_state s f) [(instr_ref v_ref), (.REF_TEST rt)]) [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 0)))] + | ref_cast_succeed : forall (s : store) (f : frame) (v_ref : ref) (rt : reftype) (rt' : reftype) (var_0 : reftype), + (fun_inst_reftype (f.MODULE) rt var_0) -> + (Ref_ok s v_ref rt') -> + (Reftype_sub { TYPES := [], RECS := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], LOCALS := [], LABELS := [], RETURN := none, REFS := [] } rt' var_0) -> + Step_read (.mk_config (.mk_state s f) [(instr_ref v_ref), (.REF_CAST rt)]) [(instr_ref v_ref)] + | ref_cast_fail : forall (s : store) (f : frame) (v_ref : ref) (rt : reftype), + (¬(Step_read_before_ref_cast_fail (.mk_config (.mk_state s f) [(instr_ref v_ref), (.REF_CAST rt)]))) -> + Step_read (.mk_config (.mk_state s f) [(instr_ref v_ref), (.REF_CAST rt)]) [.TRAP] + | struct_new_default : forall (z : state) (x : idx) (val_lst : (List val)) (mut_opt_lst : (List (Option «mut»))) (zt_lst : (List storagetype)), + (Expand (fun_type z x) (.STRUCT (.mk_list (List.zipWith (fun (mut_opt : (Option «mut»)) (zt : storagetype) => (.mk_fieldtype mut_opt zt)) mut_opt_lst zt_lst)))) -> + ((List.length val_lst) == (List.length zt_lst)) -> + Forall₂ (fun (v_val : val) (zt : storagetype) => ((default_ (unpack zt)) == (some v_val))) val_lst zt_lst -> + Step_read (.mk_config z [(.STRUCT_NEW_DEFAULT x)]) ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.STRUCT_NEW x)]) + | struct_get_null : forall (z : state) (ht : heaptype) (sx_opt : (Option sx)) (x : idx) (i : u32), Step_read (.mk_config z [(.REF_NULL ht), (.STRUCT_GET sx_opt x i)]) [.TRAP] + | struct_get_struct : forall (z : state) (a : addr) (sx_opt : (Option sx)) (x : idx) (i : u32) (zt_lst : (List storagetype)) (mut_opt_lst : (List (Option «mut»))), + ((proj_uN_0 i) < (List.length zt_lst)) -> + ((proj_uN_0 i) < (List.length (((fun_structinst z)[a]!).FIELDS))) -> + (a < (List.length (fun_structinst z))) -> + (Expand (fun_type z x) (.STRUCT (.mk_list (List.zipWith (fun (mut_opt : (Option «mut»)) (zt : storagetype) => (.mk_fieldtype mut_opt zt)) mut_opt_lst zt_lst)))) -> + Step_read (.mk_config z [(.REF_STRUCT_ADDR a), (.STRUCT_GET sx_opt x i)]) [(instr_val (unpackfield_ (zt_lst[(proj_uN_0 i)]!) sx_opt ((((fun_structinst z)[a]!).FIELDS)[(proj_uN_0 i)]!)))] + | array_new_default : forall (z : state) (v_n : n) (x : idx) (v_val : val) (mut_opt : (Option «mut»)) (zt : storagetype), + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((default_ (unpack zt)) == (some v_val)) -> + Step_read (.mk_config z [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_NEW_DEFAULT x)]) ((List.replicate v_n (instr_val v_val)) ++ [(.ARRAY_NEW_FIXED x (.mk_uN v_n))]) + | array_new_elem_oob : forall (z : state) (i : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + ((proj_num__0 i) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length ((fun_elem z y).REFS))) -> + Step_read (.mk_config z [(.CONST .I32 i), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_NEW_ELEM x y)]) [.TRAP] + | array_new_elem_alloc : forall (z : state) (i : num_) (v_n : n) (x : idx) (y : idx) (ref_lst : (List ref)), + (wf_num_ .I32 i) -> + ((proj_num__0 i) != none) -> + (ref_lst == (List.extract ((fun_elem z y).REFS) (proj_uN_0 (Option.get! (proj_num__0 i))) v_n)) -> + Step_read (.mk_config z [(.CONST .I32 i), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_NEW_ELEM x y)]) ((List.map (fun (v_ref : ref) => (instr_ref v_ref)) ref_lst) ++ [(.ARRAY_NEW_FIXED x (.mk_uN v_n))]) + | array_new_data_oob : forall (z : state) (i : num_) (v_n : n) (x : idx) (y : idx) (mut_opt : (Option «mut»)) (zt : storagetype), + (wf_num_ .I32 i) -> + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((proj_num__0 i) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + ((((v_n * (zsize zt)) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_data z y).BYTES))) -> + Step_read (.mk_config z [(.CONST .I32 i), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_NEW_DATA x y)]) [.TRAP] + | array_new_data_num : forall (z : state) (i : num_) (v_n : n) (x : idx) (y : idx) (zt : storagetype) (c_lst : (List lit_)) (mut_opt : (Option «mut»)) (var_0_lst : (List lit_)), + Forall (fun (var_0 : lit_) => ((cunpack zt) != none)) var_0_lst -> + Forall₂ (fun (var_0 : lit_) (c : lit_) => (fun_cunpacknum_ zt c var_0)) var_0_lst c_lst -> + (wf_num_ .I32 i) -> + Forall (fun (c : lit_) => (wf_lit_ zt c)) c_lst -> + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((proj_num__0 i) != none) -> + ((concatn_ byte (List.map (fun (c : lit_) => (zbytes_ zt c)) c_lst) ((((zsize zt) : Nat) / (8 : Nat)) : Nat)) == (List.extract ((fun_data z y).BYTES) (proj_uN_0 (Option.get! (proj_num__0 i))) ((((v_n * (zsize zt)) : Nat) / (8 : Nat)) : Nat))) -> + Step_read (.mk_config z [(.CONST .I32 i), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_NEW_DATA x y)]) ((List.map (fun (var_0 : lit_) => (const (Option.get! (cunpack zt)) var_0)) var_0_lst) ++ [(.ARRAY_NEW_FIXED x (.mk_uN v_n))]) + | array_get_null : forall (z : state) (ht : heaptype) (i : num_) (sx_opt : (Option sx)) (x : idx), + (wf_num_ .I32 i) -> + Step_read (.mk_config z [(.REF_NULL ht), (.CONST .I32 i), (.ARRAY_GET sx_opt x)]) [.TRAP] + | array_get_oob : forall (z : state) (a : addr) (i : num_) (sx_opt : (Option sx)) (x : idx), + (wf_num_ .I32 i) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + ((proj_uN_0 (Option.get! (proj_num__0 i))) >= (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.ARRAY_GET sx_opt x)]) [.TRAP] + | array_get_array : forall (z : state) (a : addr) (i : num_) (sx_opt : (Option sx)) (x : idx) (zt : storagetype) (mut_opt : (Option «mut»)), + ((proj_uN_0 (Option.get! (proj_num__0 i))) < (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + (a < (List.length (fun_arrayinst z))) -> + ((proj_num__0 i) != none) -> + (wf_num_ .I32 i) -> + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.ARRAY_GET sx_opt x)]) [(instr_val (unpackfield_ zt sx_opt ((((fun_arrayinst z)[a]!).FIELDS)[(proj_uN_0 (Option.get! (proj_num__0 i)))]!)))] + | array_len_null : forall (z : state) (ht : heaptype), Step_read (.mk_config z [(.REF_NULL ht), .ARRAY_LEN]) [.TRAP] + | array_len_array : forall (z : state) (a : addr), + (a < (List.length (fun_arrayinst z))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), .ARRAY_LEN]) [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN (List.length (((fun_arrayinst z)[a]!).FIELDS)))))] + | array_fill_null : forall (z : state) (ht : heaptype) (i : num_) (v_val : val) (v_n : n) (x : idx), + (wf_num_ .I32 i) -> + Step_read (.mk_config z [(.REF_NULL ht), (.CONST .I32 i), (instr_val v_val), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_FILL x)]) [.TRAP] + | array_fill_oob : forall (z : state) (a : addr) (i : num_) (v_val : val) (v_n : n) (x : idx), + (wf_num_ .I32 i) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (instr_val v_val), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_FILL x)]) [.TRAP] + | array_fill_zero : forall (z : state) (a : addr) (i : num_) (v_val : val) (v_n : n) (x : idx), + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + (wf_num_ .I32 i) -> + (v_n == 0) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (instr_val v_val), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_FILL x)]) [] + | array_fill_succ : forall (z : state) (a : addr) (i : num_) (v_val : val) (v_n : n) (x : idx), + ((proj_num__0 i) != none) -> + (v_n != 0) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + (wf_num_ .I32 i) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (instr_val v_val), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_FILL x)]) [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (instr_val v_val), (.ARRAY_SET x), (.REF_ARRAY_ADDR a), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i))) + 1)))), (instr_val v_val), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.ARRAY_FILL x)] + | array_copy_null1 : forall (z : state) (ht_1 : heaptype) (i_1 : num_) (v_ref : ref) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + Step_read (.mk_config z [(.REF_NULL ht_1), (.CONST .I32 i_1), (instr_ref v_ref), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) [.TRAP] + | array_copy_null2 : forall (z : state) (v_ref : ref) (i_1 : num_) (ht_2 : heaptype) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + Step_read (.mk_config z [(instr_ref v_ref), (.CONST .I32 i_1), (.REF_NULL ht_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) [.TRAP] + | array_copy_oob1 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + ((proj_num__0 i_1) != none) -> + (a_1 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) > (List.length (((fun_arrayinst z)[a_1]!).FIELDS))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) [.TRAP] + | array_copy_oob2 : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + ((proj_num__0 i_2) != none) -> + (a_2 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) > (List.length (((fun_arrayinst z)[a_2]!).FIELDS))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) [.TRAP] + | array_copy_zero : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx), + ((proj_num__0 i_2) != none) -> + (a_2 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) <= (List.length (((fun_arrayinst z)[a_2]!).FIELDS))) -> + ((proj_num__0 i_1) != none) -> + (a_1 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) <= (List.length (((fun_arrayinst z)[a_1]!).FIELDS))) -> + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + (v_n == 0) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) [] + | array_copy_le : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx) (sx_opt : (Option sx)) (mut_opt : (Option «mut»)) (zt_2 : storagetype), + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + (v_n != 0) -> + (a_2 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) <= (List.length (((fun_arrayinst z)[a_2]!).FIELDS))) -> + (a_1 < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) <= (List.length (((fun_arrayinst z)[a_1]!).FIELDS))) -> + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + (Expand (fun_type z x_2) (.ARRAY (.mk_fieldtype mut_opt zt_2))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i_1))) <= (proj_uN_0 (Option.get! (proj_num__0 i_2)))) && (sx_opt == (fun_sx zt_2))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.ARRAY_GET sx_opt x_2), (.ARRAY_SET x_1), (.REF_ARRAY_ADDR a_1), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i_1))) + 1)))), (.REF_ARRAY_ADDR a_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i_2))) + 1)))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.ARRAY_COPY x_1 x_2)] + | array_copy_gt : forall (z : state) (a_1 : addr) (i_1 : num_) (a_2 : addr) (i_2 : num_) (v_n : n) (x_1 : idx) (x_2 : idx) (sx_opt : (Option sx)) (mut_opt : (Option «mut»)) (zt_2 : storagetype), + ((proj_num__0 i_1) != none) -> + ((proj_num__0 i_2) != none) -> + (wf_num_ .I32 i_1) -> + (wf_num_ .I32 i_2) -> + (¬(Step_read_before_array_copy_gt (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]))) -> + (Expand (fun_type z x_2) (.ARRAY (.mk_fieldtype mut_opt zt_2))) -> + (sx_opt == (fun_sx zt_2)) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_COPY x_1 x_2)]) [(.REF_ARRAY_ADDR a_1), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((((proj_uN_0 (Option.get! (proj_num__0 i_1))) + v_n) : Nat) - (1 : Nat)) : Nat)))), (.REF_ARRAY_ADDR a_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((((proj_uN_0 (Option.get! (proj_num__0 i_2))) + v_n) : Nat) - (1 : Nat)) : Nat)))), (.ARRAY_GET sx_opt x_2), (.ARRAY_SET x_1), (.REF_ARRAY_ADDR a_1), (.CONST .I32 i_1), (.REF_ARRAY_ADDR a_2), (.CONST .I32 i_2), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.ARRAY_COPY x_1 x_2)] + | array_init_elem_null : forall (z : state) (ht : heaptype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + Step_read (.mk_config z [(.REF_NULL ht), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_ELEM x y)]) [.TRAP] + | array_init_elem_oob1 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_ELEM x y)]) [.TRAP] + | array_init_elem_oob2 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 j) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) > (List.length ((fun_elem z y).REFS))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_ELEM x y)]) [.TRAP] + | array_init_elem_zero : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + ((proj_num__0 j) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) <= (List.length ((fun_elem z y).REFS))) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + (v_n == 0) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_ELEM x y)]) [] + | array_init_elem_succ : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx) (v_ref : ref), + ((proj_num__0 i) != none) -> + ((proj_num__0 j) != none) -> + (v_n != 0) -> + (((proj_uN_0 (Option.get! (proj_num__0 j))) + v_n) <= (List.length ((fun_elem z y).REFS))) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) <= (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + ((proj_uN_0 (Option.get! (proj_num__0 j))) < (List.length ((fun_elem z y).REFS))) -> + (v_ref == (((fun_elem z y).REFS)[(proj_uN_0 (Option.get! (proj_num__0 j)))]!)) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_ELEM x y)]) [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (instr_ref v_ref), (.ARRAY_SET x), (.REF_ARRAY_ADDR a), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i))) + 1)))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 j))) + 1)))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.ARRAY_INIT_ELEM x y)] + | array_init_data_null : forall (z : state) (ht : heaptype) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + Step_read (.mk_config z [(.REF_NULL ht), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) [.TRAP] + | array_init_data_oob1 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + (((proj_uN_0 (Option.get! (proj_num__0 i))) + v_n) > (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) [.TRAP] + | array_init_data_oob2 : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx) (mut_opt : (Option «mut»)) (zt : storagetype), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((proj_num__0 j) != none) -> + (((proj_uN_0 (Option.get! (proj_num__0 j))) + ((((v_n * (zsize zt)) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_data z y).BYTES))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) [.TRAP] + | array_init_data_zero : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx), + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + (¬(Step_read_before_array_init_data_zero (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]))) -> + (v_n == 0) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) [] + | array_init_data_num : forall (z : state) (a : addr) (i : num_) (j : num_) (v_n : n) (x : idx) (y : idx) (zt : storagetype) (c : lit_) (mut_opt : (Option «mut»)) (var_0 : lit_), + ((cunpack zt) != none) -> + ((proj_num__0 i) != none) -> + ((proj_num__0 j) != none) -> + (fun_cunpacknum_ zt c var_0) -> + (wf_num_ .I32 i) -> + (wf_num_ .I32 j) -> + (wf_lit_ zt c) -> + (¬(Step_read_before_array_init_data_num (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]))) -> + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((zbytes_ zt c) == (List.extract ((fun_data z y).BYTES) (proj_uN_0 (Option.get! (proj_num__0 j))) ((((zsize zt) : Nat) / (8 : Nat)) : Nat))) -> + Step_read (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (.CONST .I32 j), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.ARRAY_INIT_DATA x y)]) [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (const (Option.get! (cunpack zt)) var_0), (.ARRAY_SET x), (.REF_ARRAY_ADDR a), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 i))) + 1)))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN ((proj_uN_0 (Option.get! (proj_num__0 j))) + ((((zsize zt) : Nat) / (8 : Nat)) : Nat))))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN (((v_n : Nat) - (1 : Nat)) : Nat)))), (.ARRAY_INIT_DATA x y)] + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 -/ +inductive Step : config -> config -> Prop where + | pure : forall (z : state) (instr_lst : (List instr)) (instr'_lst : (List instr)), + (Step_pure instr_lst instr'_lst) -> + Step (.mk_config z instr_lst) (.mk_config z instr'_lst) + | read : forall (z : state) (instr_lst : (List instr)) (instr'_lst : (List instr)), + (Step_read (.mk_config z instr_lst) instr'_lst) -> + Step (.mk_config z instr_lst) (.mk_config z instr'_lst) + | ctxt_instrs : forall (z : state) (val_lst : (List val)) (instr_lst : (List instr)) (instr_1_lst : (List instr)) (z' : state) (instr'_lst : (List instr)), + (Step (.mk_config z instr_lst) (.mk_config z' instr'_lst)) -> + ((val_lst != []) || (instr_1_lst != [])) -> + Step (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ (instr_lst ++ instr_1_lst))) (.mk_config z' ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ (instr'_lst ++ instr_1_lst))) + | ctxt_label : forall (z : state) (v_n : n) (instr_0_lst : (List instr)) (instr_lst : (List instr)) (z' : state) (instr'_lst : (List instr)), + (Step (.mk_config z instr_lst) (.mk_config z' instr'_lst)) -> + Step (.mk_config z [(.LABEL_ v_n instr_0_lst instr_lst)]) (.mk_config z' [(.LABEL_ v_n instr_0_lst instr'_lst)]) + | ctxt_frame : forall (s : store) (f : frame) (v_n : n) (f' : frame) (instr_lst : (List instr)) (s' : store) (f'' : frame) (instr'_lst : (List instr)), + (Step (.mk_config (.mk_state s f') instr_lst) (.mk_config (.mk_state s' f'') instr'_lst)) -> + Step (.mk_config (.mk_state s f) [(.FRAME_ v_n f' instr_lst)]) (.mk_config (.mk_state s' f) [(.FRAME_ v_n f'' instr'_lst)]) + | throw : forall (z : state) (val_lst : (List val)) (v_n : n) (x : idx) (exn : exninst) (a : addr) (t_lst : (List valtype)), + (Expand (as_deftype ((fun_tag z x).TYPE)) (.FUNC (.mk_list t_lst) (.mk_list []))) -> + (a == (List.length (fun_exninst z))) -> + ((proj_uN_0 x) < (List.length (fun_tagaddr z))) -> + (exn == { TAG := ((fun_tagaddr z)[(proj_uN_0 x)]!), FIELDS := val_lst }) -> + Step (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.THROW x)])) (.mk_config (add_exninst z [exn]) [(.REF_EXN_ADDR a), .THROW_REF]) + | local_set : forall (z : state) (v_val : val) (x : idx), Step (.mk_config z [(instr_val v_val), (.LOCAL_SET x)]) (.mk_config (with_local z x v_val) []) + | global_set : forall (z : state) (v_val : val) (x : idx), Step (.mk_config z [(instr_val v_val), (.GLOBAL_SET x)]) (.mk_config (with_global z x v_val) []) + | table_set_oob : forall (z : state) («at» : addrtype) (i : num_) (v_ref : ref) (x : idx), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((proj_uN_0 (Option.get! (proj_num__0 i))) >= (List.length ((fun_table z x).REFS))) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_ref v_ref), (.TABLE_SET x)]) (.mk_config z [.TRAP]) + | table_set_val : forall (z : state) («at» : addrtype) (i : num_) (v_ref : ref) (x : idx), + ((proj_num__0 i) != none) -> + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_uN_0 (Option.get! (proj_num__0 i))) < (List.length ((fun_table z x).REFS))) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (instr_ref v_ref), (.TABLE_SET x)]) (.mk_config (with_table z x (proj_uN_0 (Option.get! (proj_num__0 i))) v_ref) []) + | table_grow_succeed : forall (z : state) (v_ref : ref) («at» : addrtype) (v_n : n) (x : idx) (ti : tableinst) (var_0 : (Option tableinst)), + (fun_growtable (fun_table z x) v_n v_ref var_0) -> + (var_0 != none) -> + (ti == (Option.get! var_0)) -> + Step (.mk_config z [(instr_ref v_ref), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.TABLE_GROW x)]) (.mk_config (with_tableinst z x ti) [(.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN (List.length ((fun_table z x).REFS)))))]) + | table_grow_fail : forall (z : state) (v_ref : ref) («at» : addrtype) (v_n : n) (x : idx) (var_0 : Nat), + (fun_inv_signed_ (size (numtype_addrtype «at»)) (0 - (1 : Nat)) var_0) -> + Step (.mk_config z [(instr_ref v_ref), (.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.TABLE_GROW x)]) (.mk_config z [(.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN var_0)))]) + | elem_drop : forall (z : state) (x : idx), Step (.mk_config z [(.ELEM_DROP x)]) (.mk_config (with_elem z x []) []) + | store_num_oob : forall (z : state) («at» : addrtype) (i : num_) (nt : numtype) (c : num_) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ nt c) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + ((((size nt) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST nt c), (.STORE nt none x ao)]) (.mk_config z [.TRAP]) + | store_num_val : forall (z : state) («at» : addrtype) (i : num_) (nt : numtype) (c : num_) (x : idx) (ao : memarg) (b_lst : (List byte)), + ((proj_num__0 i) != none) -> + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ nt c) -> + (b_lst == (nbytes_ nt c)) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST nt c), (.STORE nt none x ao)]) (.mk_config (with_mem z x ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) ((((size nt) : Nat) / (8 : Nat)) : Nat) b_lst) []) + | store_pack_oob : forall (z : state) («at» : addrtype) (i : num_) (v_Inn : Inn) (c : num_) (v_n : n) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ (numtype_addrtype v_Inn) c) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + (((v_n : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST (numtype_addrtype v_Inn) c), (.STORE (numtype_addrtype v_Inn) (some (.mk_storeop__0 v_Inn (.mk_storeop_Inn (.mk_sz v_n)))) x ao)]) (.mk_config z [.TRAP]) + | store_pack_val : forall (z : state) («at» : addrtype) (i : num_) (v_Inn : Inn) (c : num_) (v_n : n) (x : idx) (ao : memarg) (b_lst : (List byte)), + ((proj_num__0 i) != none) -> + (wf_num_ (numtype_addrtype «at») i) -> + (wf_num_ (numtype_addrtype v_Inn) c) -> + ((proj_num__0 c) != none) -> + (b_lst == (ibytes_ v_n (wrap__ (size (numtype_addrtype v_Inn)) v_n (Option.get! (proj_num__0 c))))) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (.CONST (numtype_addrtype v_Inn) c), (.STORE (numtype_addrtype v_Inn) (some (.mk_storeop__0 v_Inn (.mk_storeop_Inn (.mk_sz v_n)))) x ao)]) (.mk_config (with_mem z x ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) (((v_n : Nat) / (8 : Nat)) : Nat) b_lst) []) + | vstore_oob : forall (z : state) («at» : addrtype) (i : num_) (c : vec_) (x : idx) (ao : memarg), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + ((((vsize .V128) : Nat) / (8 : Nat)) : Nat)) > (List.length ((fun_mem z x).BYTES))) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VCONST .V128 c), (.VSTORE .V128 x ao)]) (.mk_config z [.TRAP]) + | vstore_val : forall (z : state) («at» : addrtype) (i : num_) (c : vec_) (x : idx) (ao : memarg) (b_lst : (List byte)), + ((proj_num__0 i) != none) -> + (wf_num_ (numtype_addrtype «at») i) -> + (b_lst == (vbytes_ .V128 c)) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VCONST .V128 c), (.VSTORE .V128 x ao)]) (.mk_config (with_mem z x ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) ((((vsize .V128) : Nat) / (8 : Nat)) : Nat) b_lst) []) + | vstore_lane_oob : forall (z : state) («at» : addrtype) (i : num_) (c : vec_) (v_N : N) (x : idx) (ao : memarg) (j : laneidx), + (wf_num_ (numtype_addrtype «at») i) -> + ((proj_num__0 i) != none) -> + ((((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) + v_N) > (List.length ((fun_mem z x).BYTES))) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VCONST .V128 c), (.VSTORE_LANE .V128 (.mk_sz v_N) x ao j)]) (.mk_config z [.TRAP]) + | vstore_lane_val : forall (z : state) («at» : addrtype) (i : num_) (c : vec_) (v_N : N) (x : idx) (ao : memarg) (j : laneidx) (b_lst : (List byte)) (v_Jnn : Jnn) (v_M : M), + ((proj_num__0 i) != none) -> + (wf_num_ (numtype_addrtype «at») i) -> + (v_N == (jsize v_Jnn)) -> + ((v_M : Nat) == ((128 : Nat) / (v_N : Nat))) -> + ((proj_lane__2 ((lanes_ (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)) c)[(proj_uN_0 j)]!)) != none) -> + ((proj_uN_0 j) < (List.length (lanes_ (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)) c))) -> + (b_lst == (ibytes_ v_N (.mk_uN (proj_uN_0 (Option.get! (proj_lane__2 ((lanes_ (.X (lanetype_Jnn v_Jnn) (.mk_dim v_M)) c)[(proj_uN_0 j)]!))))))) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») i), (.VCONST .V128 c), (.VSTORE_LANE .V128 (.mk_sz v_N) x ao j)]) (.mk_config (with_mem z x ((proj_uN_0 (Option.get! (proj_num__0 i))) + (proj_uN_0 (ao.OFFSET))) (((v_N : Nat) / (8 : Nat)) : Nat) b_lst) []) + | memory_grow_succeed : forall (z : state) («at» : addrtype) (v_n : n) (x : idx) (mi : meminst) (var_0 : (Option meminst)), + (fun_growmem (fun_mem z x) v_n var_0) -> + (var_0 != none) -> + (mi == (Option.get! var_0)) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.MEMORY_GROW x)]) (.mk_config (with_meminst z x mi) [(.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN ((((List.length ((fun_mem z x).BYTES)) : Nat) / ((64 * (Ki )) : Nat)) : Nat))))]) + | memory_grow_fail : forall (z : state) («at» : addrtype) (v_n : n) (x : idx) (var_0 : Nat), + (fun_inv_signed_ (size (numtype_addrtype «at»)) (0 - (1 : Nat)) var_0) -> + Step (.mk_config z [(.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN v_n))), (.MEMORY_GROW x)]) (.mk_config z [(.CONST (numtype_addrtype «at») (.mk_num__0 «at» (.mk_uN var_0)))]) + | data_drop : forall (z : state) (x : idx), Step (.mk_config z [(.DATA_DROP x)]) (.mk_config (with_data z x []) []) + | struct_new : forall (z : state) (val_lst : (List val)) (v_n : n) (x : idx) (si : structinst) (a : addr) (mut_opt_lst : (List (Option «mut»))) (zt_lst : (List storagetype)), + (Expand (fun_type z x) (.STRUCT (.mk_list (List.zipWith (fun (mut_opt : (Option «mut»)) (zt : storagetype) => (.mk_fieldtype mut_opt zt)) mut_opt_lst zt_lst)))) -> + (a == (List.length (fun_structinst z))) -> + (si == { TYPE := (fun_type z x), FIELDS := (List.zipWith (fun (v_val : val) (zt : storagetype) => (packfield_ zt v_val)) val_lst zt_lst) }) -> + Step (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.STRUCT_NEW x)])) (.mk_config (add_structinst z [si]) [(.REF_STRUCT_ADDR a)]) + | struct_set_null : forall (z : state) (ht : heaptype) (v_val : val) (x : idx) (i : u32), Step (.mk_config z [(.REF_NULL ht), (instr_val v_val), (.STRUCT_SET x i)]) (.mk_config z [.TRAP]) + | struct_set_struct : forall (z : state) (a : addr) (v_val : val) (x : idx) (i : u32) (zt_lst : (List storagetype)) (mut_opt_lst : (List (Option «mut»))), + ((proj_uN_0 i) < (List.length zt_lst)) -> + (Expand (fun_type z x) (.STRUCT (.mk_list (List.zipWith (fun (mut_opt : (Option «mut»)) (zt : storagetype) => (.mk_fieldtype mut_opt zt)) mut_opt_lst zt_lst)))) -> + Step (.mk_config z [(.REF_STRUCT_ADDR a), (instr_val v_val), (.STRUCT_SET x i)]) (.mk_config (with_struct z a (proj_uN_0 i) (packfield_ (zt_lst[(proj_uN_0 i)]!) v_val)) []) + | array_new_fixed : forall (z : state) (val_lst : (List val)) (v_n : n) (x : idx) (ai : arrayinst) (a : addr) (mut_opt : (Option «mut»)) (zt : storagetype), + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + ((a == (List.length (fun_arrayinst z))) && (ai == { TYPE := (fun_type z x), FIELDS := (List.map (fun (v_val : val) => (packfield_ zt v_val)) val_lst) })) -> + Step (.mk_config z ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.ARRAY_NEW_FIXED x (.mk_uN v_n))])) (.mk_config (add_arrayinst z [ai]) [(.REF_ARRAY_ADDR a)]) + | array_set_null : forall (z : state) (ht : heaptype) (i : num_) (v_val : val) (x : idx), + (wf_num_ .I32 i) -> + Step (.mk_config z [(.REF_NULL ht), (.CONST .I32 i), (instr_val v_val), (.ARRAY_SET x)]) (.mk_config z [.TRAP]) + | array_set_oob : forall (z : state) (a : addr) (i : num_) (v_val : val) (x : idx), + (wf_num_ .I32 i) -> + ((proj_num__0 i) != none) -> + (a < (List.length (fun_arrayinst z))) -> + ((proj_uN_0 (Option.get! (proj_num__0 i))) >= (List.length (((fun_arrayinst z)[a]!).FIELDS))) -> + Step (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (instr_val v_val), (.ARRAY_SET x)]) (.mk_config z [.TRAP]) + | array_set_array : forall (z : state) (a : addr) (i : num_) (v_val : val) (x : idx) (zt : storagetype) (mut_opt : (Option «mut»)), + ((proj_num__0 i) != none) -> + (wf_num_ .I32 i) -> + (Expand (fun_type z x) (.ARRAY (.mk_fieldtype mut_opt zt))) -> + Step (.mk_config z [(.REF_ARRAY_ADDR a), (.CONST .I32 i), (instr_val v_val), (.ARRAY_SET x)]) (.mk_config (with_array z a (proj_uN_0 (Option.get! (proj_num__0 i))) (packfield_ zt v_val)) []) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 -/ +inductive Steps : config -> config -> Prop where + | refl : forall (z : state) (instr_lst : (List instr)), Steps (.mk_config z instr_lst) (.mk_config z instr_lst) + | trans : forall (z : state) (instr_lst : (List instr)) (z'' : state) (instr''_lst : (List instr)) (z' : state) (instr'_lst : (List instr)), + (Step (.mk_config z instr_lst) (.mk_config z' instr'_lst)) -> + (Steps (.mk_config z' instr'_lst) (.mk_config z'' instr''_lst)) -> + Steps (.mk_config z instr_lst) (.mk_config z'' instr''_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:1104.1-1104.108 -/ +inductive Eval_expr : state -> expr -> state -> (List val) -> Prop where + | mk_Eval_expr : forall (z : state) (instr_lst : (List instr)) (z' : state) (val_lst : (List val)), + (Steps (.mk_config z instr_lst) (.mk_config z' (List.map (fun (v_val : val) => (instr_val v_val)) val_lst))) -> + Eval_expr z instr_lst z' val_lst + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 -/ +inductive fun_alloctypes : (List type) -> (List deftype) -> Prop where + | fun_alloctypes_case_0 : fun_alloctypes [] [] + | fun_alloctypes_case_1 : forall (type'_lst : (List type)) (v_type : type) (deftype'_lst : (List deftype)) (deftype_lst : (List deftype)) (v_rectype : rectype) (x : uN) (var_2 : (List deftype)) (var_1 : (List deftype)) (var_0 : (List deftype)), + (fun_rolldt x v_rectype var_2) -> + (fun_subst_all_deftypes var_2 (List.map (fun (deftype' : deftype) => (typeuse_deftype deftype')) deftype'_lst) var_1) -> + (fun_alloctypes type'_lst var_0) -> + (deftype'_lst == var_0) -> + (v_type == (.TYPE v_rectype)) -> + (deftype_lst == var_1) -> + ((proj_uN_0 x) == (List.length deftype'_lst)) -> + fun_alloctypes (type'_lst ++ [v_type]) (deftype'_lst ++ deftype_lst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:15.6-15.15 -/ +inductive fun_alloctag : store -> tagtype -> store × tagaddr -> Prop where + | fun_alloctag_case_0 : forall (s : store) (v_tagtype : typeuse) (v_taginst : taginst), + (v_taginst == { TYPE := v_tagtype }) -> + fun_alloctag s v_tagtype ((s ++ { TAGS := [v_taginst], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], STRUCTS := [], ARRAYS := [], EXNS := [] }), (List.length (s.TAGS))) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 -/ +inductive fun_alloctags : store -> (List tagtype) -> store × (List tagaddr) -> Prop where + | fun_alloctags_case_0 : forall (s : store), fun_alloctags s [] (s, []) + | fun_alloctags_case_1 : forall (s : store) (v_tagtype : typeuse) (tagtype'_lst : (List tagtype)) (s_2 : store) (ja : Nat) (ja'_lst : (List tagaddr)) (s_1 : store) (var_1 : store × (List tagaddr)) (var_0 : store × tagaddr), + (fun_alloctags s_1 tagtype'_lst var_1) -> + (fun_alloctag s v_tagtype var_0) -> + ((s_1, ja) == var_0) -> + ((s_2, ja'_lst) == var_1) -> + fun_alloctags s ([v_tagtype] ++ tagtype'_lst) (s_2, ([ja] ++ ja'_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:26.6-26.18 -/ +inductive fun_allocglobal : store -> globaltype -> val -> store × globaladdr -> Prop where + | fun_allocglobal_case_0 : forall (s : store) (v_globaltype : globaltype) (v_val : val) (v_globalinst : globalinst), + (v_globalinst == { TYPE := v_globaltype, VALUE := v_val }) -> + fun_allocglobal s v_globaltype v_val ((s ++ { TAGS := [], GLOBALS := [v_globalinst], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], STRUCTS := [], ARRAYS := [], EXNS := [] }), (List.length (s.GLOBALS))) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 -/ +inductive fun_allocglobals : store -> (List globaltype) -> (List val) -> store × (List globaladdr) -> Prop where + | fun_allocglobals_case_0 : forall (s : store), fun_allocglobals s [] [] (s, []) + | fun_allocglobals_case_1 : forall (s : store) (v_globaltype : globaltype) (globaltype'_lst : (List globaltype)) (v_val : val) (val'_lst : (List val)) (s_2 : store) (ga : Nat) (ga'_lst : (List globaladdr)) (s_1 : store) (var_1 : store × (List globaladdr)) (var_0 : store × globaladdr), + (fun_allocglobals s_1 globaltype'_lst val'_lst var_1) -> + (fun_allocglobal s v_globaltype v_val var_0) -> + ((s_1, ga) == var_0) -> + ((s_2, ga'_lst) == var_1) -> + fun_allocglobals s ([v_globaltype] ++ globaltype'_lst) ([v_val] ++ val'_lst) (s_2, ([ga] ++ ga'_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:37.6-37.15 -/ +inductive fun_allocmem : store -> memtype -> store × memaddr -> Prop where + | fun_allocmem_case_0 : forall (s : store) («at» : addrtype) (i : uN) (j_opt : (Option u64)) (v_meminst : meminst), + (v_meminst == { TYPE := (.PAGE «at» (.mk_limits i j_opt)), BYTES := (List.replicate ((proj_uN_0 i) * (64 * (Ki ))) (.mk_byte 0)) }) -> + fun_allocmem s (.PAGE «at» (.mk_limits i j_opt)) ((s ++ { TAGS := [], GLOBALS := [], MEMS := [v_meminst], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], STRUCTS := [], ARRAYS := [], EXNS := [] }), (List.length (s.MEMS))) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 -/ +inductive fun_allocmems : store -> (List memtype) -> store × (List memaddr) -> Prop where + | fun_allocmems_case_0 : forall (s : store), fun_allocmems s [] (s, []) + | fun_allocmems_case_1 : forall (s : store) (v_memtype : memtype) (memtype'_lst : (List memtype)) (s_2 : store) (ma : Nat) (ma'_lst : (List memaddr)) (s_1 : store) (var_1 : store × (List memaddr)) (var_0 : store × memaddr), + (fun_allocmems s_1 memtype'_lst var_1) -> + (fun_allocmem s v_memtype var_0) -> + ((s_1, ma) == var_0) -> + ((s_2, ma'_lst) == var_1) -> + fun_allocmems s ([v_memtype] ++ memtype'_lst) (s_2, ([ma] ++ ma'_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:48.6-48.17 -/ +inductive fun_alloctable : store -> tabletype -> ref -> store × tableaddr -> Prop where + | fun_alloctable_case_0 : forall (s : store) («at» : addrtype) (i : uN) (j_opt : (Option u64)) (rt : reftype) (v_ref : ref) (v_tableinst : tableinst), + (v_tableinst == { TYPE := (.mk_tabletype «at» (.mk_limits i j_opt) rt), REFS := (List.replicate (proj_uN_0 i) v_ref) }) -> + fun_alloctable s (.mk_tabletype «at» (.mk_limits i j_opt) rt) v_ref ((s ++ { TAGS := [], GLOBALS := [], MEMS := [], TABLES := [v_tableinst], FUNCS := [], DATAS := [], ELEMS := [], STRUCTS := [], ARRAYS := [], EXNS := [] }), (List.length (s.TABLES))) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 -/ +inductive fun_alloctables : store -> (List tabletype) -> (List ref) -> store × (List tableaddr) -> Prop where + | fun_alloctables_case_0 : forall (s : store), fun_alloctables s [] [] (s, []) + | fun_alloctables_case_1 : forall (s : store) (v_tabletype : tabletype) (tabletype'_lst : (List tabletype)) (v_ref : ref) (ref'_lst : (List ref)) (s_2 : store) (ta : Nat) (ta'_lst : (List tableaddr)) (s_1 : store) (var_1 : store × (List tableaddr)) (var_0 : store × tableaddr), + (fun_alloctables s_1 tabletype'_lst ref'_lst var_1) -> + (fun_alloctable s v_tabletype v_ref var_0) -> + ((s_1, ta) == var_0) -> + ((s_2, ta'_lst) == var_1) -> + fun_alloctables s ([v_tabletype] ++ tabletype'_lst) ([v_ref] ++ ref'_lst) (s_2, ([ta] ++ ta'_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:59.6-59.16 -/ +inductive fun_allocfunc : store -> deftype -> funccode -> moduleinst -> store × funcaddr -> Prop where + | fun_allocfunc_case_0 : forall (s : store) (v_deftype : deftype) (v_funccode : funccode) (v_moduleinst : moduleinst) (v_funcinst : funcinst), + (v_funcinst == { TYPE := v_deftype, MODULE := v_moduleinst, CODE := v_funccode }) -> + fun_allocfunc s v_deftype v_funccode v_moduleinst ((s ++ { TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [v_funcinst], DATAS := [], ELEMS := [], STRUCTS := [], ARRAYS := [], EXNS := [] }), (List.length (s.FUNCS))) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 -/ +inductive fun_allocfuncs : store -> (List deftype) -> (List funccode) -> (List moduleinst) -> store × (List funcaddr) -> Prop where + | fun_allocfuncs_case_0 : forall (s : store), fun_allocfuncs s [] [] [] (s, []) + | fun_allocfuncs_case_1 : forall (s : store) (dt : deftype) (dt'_lst : (List deftype)) (v_funccode : funccode) (funccode'_lst : (List funccode)) (v_moduleinst : moduleinst) (moduleinst'_lst : (List moduleinst)) (s_2 : store) (fa : Nat) (fa'_lst : (List funcaddr)) (s_1 : store) (var_1 : store × (List funcaddr)) (var_0 : store × funcaddr), + (fun_allocfuncs s_1 dt'_lst funccode'_lst moduleinst'_lst var_1) -> + (fun_allocfunc s dt v_funccode v_moduleinst var_0) -> + ((s_1, fa) == var_0) -> + ((s_2, fa'_lst) == var_1) -> + fun_allocfuncs s ([dt] ++ dt'_lst) ([v_funccode] ++ funccode'_lst) ([v_moduleinst] ++ moduleinst'_lst) (s_2, ([fa] ++ fa'_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:70.6-70.16 -/ +inductive fun_allocdata : store -> datatype -> (List byte) -> store × dataaddr -> Prop where + | fun_allocdata_case_0 : forall (s : store) (byte_lst : (List byte)) (v_datainst : datainst), + (v_datainst == { BYTES := byte_lst }) -> + fun_allocdata s .OK byte_lst ((s ++ { TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [v_datainst], ELEMS := [], STRUCTS := [], ARRAYS := [], EXNS := [] }), (List.length (s.DATAS))) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 -/ +inductive fun_allocdatas : store -> (List datatype) -> (List (List byte)) -> store × (List dataaddr) -> Prop where + | fun_allocdatas_case_0 : forall (s : store), fun_allocdatas s [] [] (s, []) + | fun_allocdatas_case_1 : forall (s : store) (ok : datatype) (ok'_lst : (List datatype)) (b_lst : (List byte)) (b'_lst_lst : (List (List byte))) (s_2 : store) (da : Nat) (da'_lst : (List dataaddr)) (s_1 : store) (var_1 : store × (List dataaddr)) (var_0 : store × dataaddr), + (fun_allocdatas s_1 ok'_lst b'_lst_lst var_1) -> + (fun_allocdata s ok b_lst var_0) -> + ((s_1, da) == var_0) -> + ((s_2, da'_lst) == var_1) -> + fun_allocdatas s ([ok] ++ ok'_lst) ([b_lst] ++ b'_lst_lst) (s_2, ([da] ++ da'_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:81.6-81.16 -/ +inductive fun_allocelem : store -> elemtype -> (List ref) -> store × elemaddr -> Prop where + | fun_allocelem_case_0 : forall (s : store) (v_elemtype : reftype) (ref_lst : (List ref)) (v_eleminst : eleminst), + (v_eleminst == { TYPE := v_elemtype, REFS := ref_lst }) -> + fun_allocelem s v_elemtype ref_lst ((s ++ { TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [v_eleminst], STRUCTS := [], ARRAYS := [], EXNS := [] }), (List.length (s.ELEMS))) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 -/ +inductive fun_allocelems : store -> (List elemtype) -> (List (List ref)) -> store × (List elemaddr) -> Prop where + | fun_allocelems_case_0 : forall (s : store), fun_allocelems s [] [] (s, []) + | fun_allocelems_case_1 : forall (s : store) (rt : reftype) (rt'_lst : (List reftype)) (ref_lst : (List ref)) (ref'_lst_lst : (List (List ref))) (s_2 : store) (ea : Nat) (ea'_lst : (List elemaddr)) (s_1 : store) (var_1 : store × (List elemaddr)) (var_0 : store × elemaddr), + (fun_allocelems s_1 rt'_lst ref'_lst_lst var_1) -> + (fun_allocelem s rt ref_lst var_0) -> + ((s_1, ea) == var_0) -> + ((s_2, ea'_lst) == var_1) -> + fun_allocelems s ([rt] ++ rt'_lst) ([ref_lst] ++ ref'_lst_lst) (s_2, ([ea] ++ ea'_lst)) + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:92.1-92.90 -/ +def allocexport : ∀ (v_moduleinst : moduleinst) (v_export : «export») , exportinst + | v_moduleinst, (.EXPORT v_name (.TAG x)) => + { NAME := v_name, ADDR := (.TAG ((v_moduleinst.TAGS)[(proj_uN_0 x)]!)) } + | v_moduleinst, (.EXPORT v_name (.GLOBAL x)) => + { NAME := v_name, ADDR := (.GLOBAL ((v_moduleinst.GLOBALS)[(proj_uN_0 x)]!)) } + | v_moduleinst, (.EXPORT v_name (.MEM x)) => + { NAME := v_name, ADDR := (.MEM ((v_moduleinst.MEMS)[(proj_uN_0 x)]!)) } + | v_moduleinst, (.EXPORT v_name (.TABLE x)) => + { NAME := v_name, ADDR := (.TABLE ((v_moduleinst.TABLES)[(proj_uN_0 x)]!)) } + | v_moduleinst, (.EXPORT v_name (.FUNC x)) => + { NAME := v_name, ADDR := (.FUNC ((v_moduleinst.FUNCS)[(proj_uN_0 x)]!)) } + + +/- Auxiliary Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:99.1-99.104 -/ +def allocexports : ∀ (v_moduleinst : moduleinst) (var_0 : (List «export»)) , (List exportinst) + | v_moduleinst, export_lst => + (List.map (fun (v_export : «export») => (allocexport v_moduleinst v_export)) export_lst) + + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:103.6-103.18 -/ +inductive fun_allocmodule : store -> module -> (List externaddr) -> (List val) -> (List ref) -> (List (List ref)) -> store × moduleinst -> Prop where + | fun_allocmodule_case_0 : forall (s : store) (v_module : module) (externaddr_lst : (List externaddr)) (val_G_lst : (List val)) (ref_T_lst : (List ref)) (ref_E_lst_lst : (List (List ref))) (s_7 : store) (v_moduleinst : moduleinst) (type_lst : (List type)) (import_lst : (List «import»)) (tag_lst : (List tag)) (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (func_lst : (List func)) (data_lst : (List data)) (elem_lst : (List elem)) (start_opt : (Option start)) (export_lst : (List «export»)) (tagtype_lst : (List tagtype)) (globaltype_lst : (List globaltype)) (expr_G_lst : (List expr)) (memtype_lst : (List memtype)) (tabletype_lst : (List tabletype)) (expr_T_lst : (List expr)) (x_lst : (List idx)) (local_lst_lst : (List (List «local»))) (expr_F_lst : (List expr)) (byte_lst_lst : (List (List byte))) (datamode_lst : (List datamode)) (elemtype_lst : (List elemtype)) (expr_E_lst_lst : (List (List expr))) (elemmode_lst : (List elemmode)) (aa_I_lst : (List tagaddr)) (ga_I_lst : (List globaladdr)) (ma_I_lst : (List memaddr)) (ta_I_lst : (List tableaddr)) (fa_I_lst : (List funcaddr)) (dt_lst : (List deftype)) (fa_lst : (List Nat)) (i_F_lst : (List Nat)) (s_1 : store) (aa_lst : (List tagaddr)) (s_2 : store) (ga_lst : (List globaladdr)) (s_3 : store) (ma_lst : (List memaddr)) (s_4 : store) (ta_lst : (List tableaddr)) (s_5 : store) (da_lst : (List dataaddr)) (s_6 : store) (ea_lst : (List elemaddr)) (xi_lst : (List exportinst)) (var_17 : store × (List funcaddr)) (var_16_lst : (List elemtype)) (var_15 : store × (List elemaddr)) (var_14 : store × (List dataaddr)) (var_13_lst : (List tabletype)) (var_12 : store × (List tableaddr)) (var_11_lst : (List memtype)) (var_10 : store × (List memaddr)) (var_9_lst : (List globaltype)) (var_8 : store × (List globaladdr)) (var_7_lst : (List tagtype)) (var_6 : store × (List tagaddr)) (var_5 : (List deftype)) (var_4 : (List funcaddr)) (var_3 : (List tableaddr)) (var_2 : (List memaddr)) (var_1 : (List globaladdr)) (var_0 : (List tagaddr)), + Forall (fun (x : idx) => ((proj_uN_0 x) < (List.length dt_lst))) x_lst -> + (fun_allocfuncs s_6 (List.map (fun (x : idx) => (dt_lst[(proj_uN_0 x)]!)) x_lst) (list_map3 (fun (expr_F : expr) (local_lst : (List «local»)) (x : idx) => (.FUNC x local_lst expr_F)) expr_F_lst local_lst_lst x_lst) (List.replicate (List.length func_lst) v_moduleinst) var_17) -> + ((List.length var_16_lst) == (List.length elemtype_lst)) -> + Forall₂ (fun (var_16 : elemtype) (v_elemtype : elemtype) => (fun_subst_all_reftype v_elemtype (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_16)) var_16_lst elemtype_lst -> + (fun_allocelems s_5 var_16_lst ref_E_lst_lst var_15) -> + (fun_allocdatas s_4 (List.replicate (List.length data_lst) .OK) byte_lst_lst var_14) -> + ((List.length var_13_lst) == (List.length tabletype_lst)) -> + Forall₂ (fun (var_13 : tabletype) (v_tabletype : tabletype) => (fun_subst_all_tabletype v_tabletype (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_13)) var_13_lst tabletype_lst -> + (fun_alloctables s_3 var_13_lst ref_T_lst var_12) -> + ((List.length var_11_lst) == (List.length memtype_lst)) -> + Forall₂ (fun (var_11 : memtype) (v_memtype : memtype) => (fun_subst_all_memtype v_memtype (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_11)) var_11_lst memtype_lst -> + (fun_allocmems s_2 var_11_lst var_10) -> + ((List.length var_9_lst) == (List.length globaltype_lst)) -> + Forall₂ (fun (var_9 : globaltype) (v_globaltype : globaltype) => (fun_subst_all_globaltype v_globaltype (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_9)) var_9_lst globaltype_lst -> + (fun_allocglobals s_1 var_9_lst val_G_lst var_8) -> + ((List.length var_7_lst) == (List.length tagtype_lst)) -> + Forall₂ (fun (var_7 : tagtype) (v_tagtype : tagtype) => (fun_subst_all_tagtype v_tagtype (List.map (fun (dt : deftype) => (typeuse_deftype dt)) dt_lst) var_7)) var_7_lst tagtype_lst -> + (fun_alloctags s var_7_lst var_6) -> + (fun_alloctypes type_lst var_5) -> + (fun_funcsxa externaddr_lst var_4) -> + (fun_tablesxa externaddr_lst var_3) -> + (fun_memsxa externaddr_lst var_2) -> + (fun_globalsxa externaddr_lst var_1) -> + (fun_tagsxa externaddr_lst var_0) -> + (v_module == (.MODULE type_lst import_lst tag_lst global_lst mem_lst table_lst func_lst data_lst elem_lst start_opt export_lst)) -> + (tag_lst == (List.map (fun (v_tagtype : tagtype) => (.TAG v_tagtype)) tagtype_lst)) -> + (global_lst == (List.zipWith (fun (expr_G : expr) (v_globaltype : globaltype) => (.GLOBAL v_globaltype expr_G)) expr_G_lst globaltype_lst)) -> + (mem_lst == (List.map (fun (v_memtype : memtype) => (.MEMORY v_memtype)) memtype_lst)) -> + (table_lst == (List.zipWith (fun (expr_T : expr) (v_tabletype : tabletype) => (.TABLE v_tabletype expr_T)) expr_T_lst tabletype_lst)) -> + (func_lst == (list_map3 (fun (expr_F : expr) (local_lst : (List «local»)) (x : idx) => (.FUNC x local_lst expr_F)) expr_F_lst local_lst_lst x_lst)) -> + (data_lst == (List.zipWith (fun (byte_lst : (List byte)) (v_datamode : datamode) => (.DATA byte_lst v_datamode)) byte_lst_lst datamode_lst)) -> + (elem_lst == (list_map3 (fun (v_elemmode : elemmode) (v_elemtype : elemtype) (expr_E_lst : (List expr)) => (.ELEM v_elemtype expr_E_lst v_elemmode)) elemmode_lst elemtype_lst expr_E_lst_lst)) -> + (aa_I_lst == var_0) -> + (ga_I_lst == var_1) -> + (ma_I_lst == var_2) -> + (ta_I_lst == var_3) -> + (fa_I_lst == var_4) -> + (dt_lst == var_5) -> + (fa_lst == (List.map (fun (i_F : Nat) => ((List.length (s.FUNCS)) + i_F)) i_F_lst)) -> + ((s_1, aa_lst) == var_6) -> + ((s_2, ga_lst) == var_8) -> + ((s_3, ma_lst) == var_10) -> + ((s_4, ta_lst) == var_12) -> + ((s_5, da_lst) == var_14) -> + ((s_6, ea_lst) == var_15) -> + ((s_7, fa_lst) == var_17) -> + (xi_lst == (allocexports { TYPES := [], TAGS := (aa_I_lst ++ aa_lst), GLOBALS := (ga_I_lst ++ ga_lst), MEMS := (ma_I_lst ++ ma_lst), TABLES := (ta_I_lst ++ ta_lst), FUNCS := (fa_I_lst ++ fa_lst), DATAS := [], ELEMS := [], EXPORTS := [] } export_lst)) -> + (v_moduleinst == { TYPES := dt_lst, TAGS := (aa_I_lst ++ aa_lst), GLOBALS := (ga_I_lst ++ ga_lst), MEMS := (ma_I_lst ++ ma_lst), TABLES := (ta_I_lst ++ ta_lst), FUNCS := (fa_I_lst ++ fa_lst), DATAS := da_lst, ELEMS := ea_lst, EXPORTS := xi_lst }) -> + fun_allocmodule s v_module externaddr_lst val_G_lst ref_T_lst ref_E_lst_lst (s_7, v_moduleinst) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:148.6-148.15 -/ +inductive fun_rundata_ : dataidx -> data -> (List instr) -> Prop where + | fun_rundata__case_0 : forall (x : uN) (b_lst : (List byte)) (v_n : Nat), fun_rundata_ x (.DATA b_lst .PASSIVE) [] + | fun_rundata__case_1 : forall (x : uN) (b_lst : (List byte)) (v_n : Nat) (y : uN) (instr_lst : (List instr)), fun_rundata_ x (.DATA b_lst (.ACTIVE y instr_lst)) (instr_lst ++ [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 0))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.MEMORY_INIT y x), (.DATA_DROP x)]) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:153.6-153.15 -/ +inductive fun_runelem_ : elemidx -> elem -> (List instr) -> Prop where + | fun_runelem__case_0 : forall (x : uN) (rt : reftype) (e_lst : (List expr)) (v_n : Nat), fun_runelem_ x (.ELEM rt e_lst .PASSIVE) [] + | fun_runelem__case_1 : forall (x : uN) (rt : reftype) (e_lst : (List expr)) (v_n : Nat), fun_runelem_ x (.ELEM rt e_lst .DECLARE) [(.ELEM_DROP x)] + | fun_runelem__case_2 : forall (x : uN) (rt : reftype) (e_lst : (List expr)) (v_n : Nat) (y : uN) (instr_lst : (List instr)), fun_runelem_ x (.ELEM rt e_lst (.ACTIVE y instr_lst)) (instr_lst ++ [(.CONST .I32 (.mk_num__0 .I32 (.mk_uN 0))), (.CONST .I32 (.mk_num__0 .I32 (.mk_uN v_n))), (.TABLE_INIT y x), (.ELEM_DROP x)]) + +/- Recursive Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 -/ +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 -/ +inductive fun_evalglobals : state -> (List globaltype) -> (List expr) -> state × (List val) -> Prop where + | fun_evalglobals_case_0 : forall (z : state), fun_evalglobals z [] [] (z, []) + | fun_evalglobals_case_1 : forall (z : state) (gt : globaltype) (gt'_lst : (List globaltype)) (v_expr : (List instr)) (expr'_lst : (List expr)) (z' : state) (v_val : val) (val'_lst : (List val)) (s : store) (f : frame) (s' : store) (a : Nat) (var_1 : state × (List val)) (var_0 : store × globaladdr), + (fun_evalglobals (.mk_state s' (f <| MODULE, GLOBALS := ((GLOBALS (f.MODULE)) ++ [a]) |>)) gt'_lst expr'_lst var_1) -> + (fun_allocglobal s gt v_val var_0) -> + (Eval_expr z v_expr z [v_val]) -> + (z == (.mk_state s f)) -> + ((s', a) == var_0) -> + ((z', val'_lst) == var_1) -> + fun_evalglobals z ([gt] ++ gt'_lst) ([v_expr] ++ expr'_lst) (z', ([v_val] ++ val'_lst)) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.6-169.18 -/ +inductive fun_instantiate : store -> module -> (List externaddr) -> config -> Prop where + | fun_instantiate_case_0 : forall (s : store) (v_module : module) (externaddr_lst : (List externaddr)) (s' : store) (v_moduleinst : moduleinst) (instr_E_lst : (List instr)) (instr_D_lst : (List instr)) (instr_S_opt : (Option instr)) (xt_I_lst : (List externtype)) (xt_E_lst : (List externtype)) (type_lst : (List type)) (import_lst : (List «import»)) (tag_lst : (List tag)) (global_lst : (List global)) (mem_lst : (List mem)) (table_lst : (List table)) (func_lst : (List func)) (data_lst : (List data)) (elem_lst : (List elem)) (start_opt : (Option start)) (export_lst : (List «export»)) (globaltype_lst : (List globaltype)) (expr_G_lst : (List expr)) (tabletype_lst : (List tabletype)) (expr_T_lst : (List expr)) (byte_lst_lst : (List (List byte))) (datamode_lst : (List datamode)) (reftype_lst : (List reftype)) (expr_E_lst_lst : (List (List expr))) (elemmode_lst : (List elemmode)) (x_opt : (Option idx)) (moduleinst_0 : moduleinst) (i_F_lst : (List Nat)) (z : state) (z' : state) (val_G_lst : (List val)) (ref_T_lst : (List ref)) (ref_E_lst_lst : (List (List ref))) (i_D_lst : (List Nat)) (i_E_lst : (List Nat)) (var_6_lst : (List (List instr))) (var_5_lst : (List (List instr))) (var_4 : store × moduleinst) (var_3 : state × (List val)) (var_2 : (List funcaddr)) (var_1 : (List globaladdr)) (var_0 : (List deftype)), + Forall (fun (i_E : Nat) => (i_E < (List.length elem_lst))) i_E_lst -> + Forall₂ (fun (var_6 : (List instr)) (i_E : Nat) => (fun_runelem_ (.mk_uN i_E) (elem_lst[i_E]!) var_6)) var_6_lst i_E_lst -> + Forall (fun (i_D : Nat) => (i_D < (List.length data_lst))) i_D_lst -> + Forall₂ (fun (var_5 : (List instr)) (i_D : Nat) => (fun_rundata_ (.mk_uN i_D) (data_lst[i_D]!) var_5)) var_5_lst i_D_lst -> + (fun_allocmodule s v_module externaddr_lst val_G_lst ref_T_lst ref_E_lst_lst var_4) -> + (fun_evalglobals z globaltype_lst expr_G_lst var_3) -> + (fun_funcsxa externaddr_lst var_2) -> + (fun_globalsxa externaddr_lst var_1) -> + (fun_alloctypes type_lst var_0) -> + (Module_ok v_module (.mk_moduletype xt_I_lst xt_E_lst)) -> + ((List.length externaddr_lst) == (List.length xt_I_lst)) -> + Forall₂ (fun (v_externaddr : externaddr) (xt_I : externtype) => (Externaddr_ok s v_externaddr xt_I)) externaddr_lst xt_I_lst -> + (v_module == (.MODULE type_lst import_lst tag_lst global_lst mem_lst table_lst func_lst data_lst elem_lst start_opt export_lst)) -> + (global_lst == (List.zipWith (fun (expr_G : expr) (v_globaltype : globaltype) => (.GLOBAL v_globaltype expr_G)) expr_G_lst globaltype_lst)) -> + (table_lst == (List.zipWith (fun (expr_T : expr) (v_tabletype : tabletype) => (.TABLE v_tabletype expr_T)) expr_T_lst tabletype_lst)) -> + (data_lst == (List.zipWith (fun (byte_lst : (List byte)) (v_datamode : datamode) => (.DATA byte_lst v_datamode)) byte_lst_lst datamode_lst)) -> + (elem_lst == (list_map3 (fun (v_elemmode : elemmode) (expr_E_lst : (List expr)) (v_reftype : reftype) => (.ELEM v_reftype expr_E_lst v_elemmode)) elemmode_lst expr_E_lst_lst reftype_lst)) -> + (start_opt == (Option.map (fun (x : idx) => (.START x)) x_opt)) -> + (moduleinst_0 == { TYPES := var_0, TAGS := [], GLOBALS := var_1, MEMS := [], TABLES := [], FUNCS := (var_2 ++ (List.map (fun (i_F : Nat) => ((List.length (s.FUNCS)) + i_F)) i_F_lst)), DATAS := [], ELEMS := [], EXPORTS := [] }) -> + (z == (.mk_state s { LOCALS := [], MODULE := moduleinst_0 })) -> + ((z', val_G_lst) == var_3) -> + ((List.length expr_T_lst) == (List.length ref_T_lst)) -> + Forall₂ (fun (expr_T : expr) (ref_T : ref) => (Eval_expr z' expr_T z' [(val_ref ref_T)])) expr_T_lst ref_T_lst -> + ((List.length expr_E_lst_lst) == (List.length ref_E_lst_lst)) -> + Forall₂ (fun (expr_E_lst : (List expr)) (ref_E_lst : (List ref)) => ((List.length expr_E_lst) == (List.length ref_E_lst))) expr_E_lst_lst ref_E_lst_lst -> + Forall₂ (fun (expr_E_lst : (List expr)) (ref_E_lst : (List ref)) => Forall₂ (fun (expr_E : expr) (ref_E : ref) => (Eval_expr z' expr_E z' [(val_ref ref_E)])) expr_E_lst ref_E_lst) expr_E_lst_lst ref_E_lst_lst -> + ((s', v_moduleinst) == var_4) -> + (instr_D_lst == (concat_ instr var_5_lst)) -> + (instr_E_lst == (concat_ instr var_6_lst)) -> + (instr_S_opt == (Option.map (fun (x : idx) => (.CALL x)) x_opt)) -> + fun_instantiate s v_module externaddr_lst (.mk_config (.mk_state s' { LOCALS := [], MODULE := v_moduleinst }) (instr_E_lst ++ (instr_D_lst ++ (Option.toList instr_S_opt)))) + +/- Inductive Relations Definition at: ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:199.6-199.13 -/ +inductive fun_invoke : store -> funcaddr -> (List val) -> config -> Prop where + | fun_invoke_case_0 : forall (s : store) (v_funcaddr : Nat) (val_lst : (List val)) (t_1_lst : (List valtype)) (t_2_lst : (List valtype)), + (v_funcaddr < (List.length (s.FUNCS))) -> + (Expand (((s.FUNCS)[v_funcaddr]!).TYPE) (.FUNC (.mk_list t_1_lst) (.mk_list t_2_lst))) -> + ((List.length t_1_lst) == (List.length val_lst)) -> + Forall₂ (fun (t_1 : valtype) (v_val : val) => (Val_ok s v_val t_1)) t_1_lst val_lst -> + fun_invoke s v_funcaddr val_lst (.mk_config (.mk_state s { LOCALS := [], MODULE := { TYPES := [], TAGS := [], GLOBALS := [], MEMS := [], TABLES := [], FUNCS := [], DATAS := [], ELEMS := [], EXPORTS := [] } }) ((List.map (fun (v_val : val) => (instr_val v_val)) val_lst) ++ [(.REF_FUNC_ADDR v_funcaddr), (.CALL_REF (typeuse_deftype (((s.FUNCS)[v_funcaddr]!).TYPE)))])) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:18.1-18.31 -/ +abbrev castop : Type := (Option null) × (Option null) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:98.1-98.35 -/ +abbrev memidxop : Type := memidx × memarg + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/5.4-binary.modules.spectec:89.1-89.43 -/ +abbrev startopt : Type := (List start) + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/5.4-binary.modules.spectec:124.1-124.46 -/ +abbrev code : Type := (List «local») × expr + +/- Type Alias Definition at: ../../../../specification/wasm-3.0/5.4-binary.modules.spectec:156.1-156.33 -/ +abbrev nopt : Type := (List u32) \ No newline at end of file diff --git a/spectec/test-lean4/dune b/spectec/test-lean4/dune new file mode 100644 index 0000000000..5c833e48c4 --- /dev/null +++ b/spectec/test-lean4/dune @@ -0,0 +1,14 @@ +(rule + (targets + Wasm.lean.act + ) + (action + (system "../src/exe-spectec/main.exe ../../../../specification/wasm-3.0/[012345]*.spectec -v -l --lean4 -o Wasm.lean.act") + ) + (deps + (file ../src/exe-spectec/main.exe) + (glob_files ../specification/wasm-3.0/*) + ) +) + +(rule (alias runtest) (action (diff Wasm.lean Wasm.lean.act))) \ No newline at end of file diff --git a/spectec/test-lean4/lean-toolchain b/spectec/test-lean4/lean-toolchain new file mode 100644 index 0000000000..5946692c4e --- /dev/null +++ b/spectec/test-lean4/lean-toolchain @@ -0,0 +1 @@ +leanprover/lean4:v4.25.0-rc1 diff --git a/spectec/test-middlend/dune.inc b/spectec/test-middlend/dune.inc index e2588b991f..9e359adbab 100644 --- a/spectec/test-middlend/dune.inc +++ b/spectec/test-middlend/dune.inc @@ -1,12 +1,15 @@ (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/00-elab.il specification.act/00-elab.il)))) (rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/01-ite.il specification.act/01-ite.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/02-typefamily-removal.il specification.act/02-typefamily-removal.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/03-remove-indexed-types.il specification.act/03-remove-indexed-types.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/04-totalize.il specification.act/04-totalize.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/05-else.il specification.act/05-else.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/06-uncase-removal.il specification.act/06-uncase-removal.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/07-sideconditions.il specification.act/07-sideconditions.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/08-sub-expansion.il specification.act/08-sub-expansion.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/09-sub.il specification.act/09-sub.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/10-alias-demut.il specification.act/10-alias-demut.il)))) -(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/11-improve-ids.il specification.act/11-improve-ids.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/02-let-intro.il specification.act/02-let-intro.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/03-typefamily-removal.il specification.act/03-typefamily-removal.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/04-remove-indexed-types.il specification.act/04-remove-indexed-types.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/05-totalize.il specification.act/05-totalize.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/06-else.il specification.act/06-else.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/07-else-simplification.il specification.act/07-else-simplification.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/08-uncase-removal.il specification.act/08-uncase-removal.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/09-sub-expansion.il specification.act/09-sub-expansion.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/10-sub.il specification.act/10-sub.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/11-definition-to-relation.il specification.act/11-definition-to-relation.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/12-sideconditions.il specification.act/12-sideconditions.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/13-alias-demut.il specification.act/13-alias-demut.il)))) +(rule (alias runtest) (deps (alias dune.inc) (file specification.act) (glob_files_rec specification.exp/*)) (action (no-infer (diff specification.exp/14-improve-ids.il specification.act/14-improve-ids.il)))) diff --git a/spectec/test-middlend/specification.exp/00-elab.il b/spectec/test-middlend/specification.exp/00-elab.il index 56e44e4e13..a091682f93 100644 --- a/spectec/test-middlend/specification.exp/00-elab.il +++ b/spectec/test-middlend/specification.exp/00-elab.il @@ -294,36 +294,8 @@ syntax char = | `%`{i : nat}(i : nat) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) - -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) - -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) - -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = @@ -534,6 +506,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -909,7 +883,9 @@ def $inv_jsize(nat : nat) : Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = I16_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : n}(n) = ($inv_isize(n) : addrtype <: Jnn) + def $inv_jsize(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = I64_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn @@ -966,7 +942,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : n}(n) = $inv_jsize(n) + def $inv_jsizenn(8) = I8_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = I16_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = I64_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype @@ -1027,13 +1009,13 @@ def $as_deftype(typeuse : typeuse) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1041,13 +1023,13 @@ def $tagsxt(externtype*) : tagtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1055,13 +1037,13 @@ def $globalsxt(externtype*) : globaltype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1069,13 +1051,13 @@ def $memsxt(externtype*) : memtype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1083,13 +1065,13 @@ def $tablesxt(externtype*) : tabletype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise } @@ -1097,14 +1079,18 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = tu_1 -- if (tv = tv_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:367.1-367.92 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:373.1-373.92 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) -- otherwise } @@ -1112,13 +1098,13 @@ def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } @@ -1141,74 +1127,74 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1303,11 +1289,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1342,9 +1328,9 @@ def $expanddt(deftype : deftype) : comptype -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_addrtype(numtype : numtype) : free +def $free_addrtype(addrtype : addrtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_addrtype{addrtype : addrtype}((addrtype : addrtype <: numtype)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_addrtype{addrtype : addrtype}(addrtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_numtype(numtype : numtype) : free @@ -1390,75 +1376,75 @@ def $free_typevar(typevar : typevar) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.1-484.36 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.1-490.36 def $free_heaptype(heaptype : heaptype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:532.1-532.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:538.1-538.65 def $free_heaptype{absheaptype : absheaptype}((absheaptype : absheaptype <: heaptype)) = $free_absheaptype(absheaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:533.1-533.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:539.1-539.53 def $free_heaptype{typeuse : typeuse}((typeuse : typeuse <: heaptype)) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.1-485.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 def $free_reftype(reftype : reftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:535.1-535.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:541.1-541.65 def $free_reftype{`null?` : null?, heaptype : heaptype}(REF_reftype(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.1-487.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.1-493.34 def $free_typeuse(typeuse : typeuse) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:535.1-535.52 def $free_typeuse{typevar : typevar}((typevar : typevar <: typeuse)) = $free_typevar(typevar) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:536.1-536.52 def $free_typeuse{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.1-488.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 def $free_valtype(valtype : valtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:537.1-537.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:543.1-543.52 def $free_valtype{numtype : numtype}((numtype : numtype <: valtype)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:538.1-538.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:544.1-544.52 def $free_valtype{vectype : vectype}((vectype : vectype <: valtype)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:539.1-539.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:545.1-545.52 def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:540.1-540.28 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:546.1-546.28 def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.1-490.40 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:496.1-496.40 def $free_resulttype(resulttype : resulttype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:542.1-542.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:548.1-548.69 def $free_resulttype{`valtype*` : valtype*}(`%`_resulttype(valtype*{valtype <- `valtype*`})) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.42 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.1-497.42 def $free_storagetype(storagetype : storagetype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:544.1-544.56 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-550.56 def $free_storagetype{valtype : valtype}((valtype : valtype <: storagetype)) = $free_valtype(valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:545.1-545.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:551.1-551.59 def $free_storagetype{packtype : packtype}((packtype : packtype <: storagetype)) = $free_packtype(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.38 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:498.1-498.38 def $free_fieldtype(fieldtype : fieldtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:547.1-547.71 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.71 def $free_fieldtype{`mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.1-493.36 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:499.1-499.36 def $free_comptype(comptype : comptype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:549.1-549.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:555.1-555.80 def $free_comptype{`fieldtype*` : fieldtype*}(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-550.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.65 def $free_comptype{fieldtype : fieldtype}(ARRAY_comptype(fieldtype)) = $free_fieldtype(fieldtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:551.1-551.121 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:557.1-557.121 def $free_comptype{resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1475,12 +1461,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -2611,18 +2597,22 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : idx, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } @@ -3296,6 +3286,8 @@ def $default_(valtype : valtype) : val? def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -5794,47 +5786,47 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') @@ -5861,34 +5853,34 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') @@ -7292,4045 +7284,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(32)} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(64)} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN(33)} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(32)} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(64)} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN(32)} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN(64)} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat))) - -- if (i!`%`_s33.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_labelidx.0):Bbyte => `%`_laneidx(l!`%`_labelidx.0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:({Tidchar} | {Tstring} | {","} | {";"} | {"["} | {"]"} | {"{"} | {"}"})+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} (Tnewline | Teof)} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:({" "} | Tformat | Tcomment | Tannot)*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {(Tspace | Ttoken)*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} ({"E"} | {"e"}) {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} ({"P"} | {"p"}) {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag(N)} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag(N)} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(8)} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(32)} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(64)} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(8)} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(16)} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(32)} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(64)} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN(32)} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN(64)} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : I, I' : I}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[x!`%`_idx.0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_idx.0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_idx.0] = ?()]) - -- if (?(id) = I.LABELS_I[x!`%`_idx.0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod (Bvar(syntax symdots) | Bvar(syntax B)) => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod (Tvar(syntax symdots) | Tvar(syntax T)) => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/01-ite.il b/spectec/test-middlend/specification.exp/01-ite.il index cfaeb0462a..6f15cc1587 100644 --- a/spectec/test-middlend/specification.exp/01-ite.il +++ b/spectec/test-middlend/specification.exp/01-ite.il @@ -286,36 +286,8 @@ syntax char = | `%`{i : nat}(i : nat) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) - -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) - -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) - -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = @@ -521,6 +493,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -896,7 +870,9 @@ def $inv_jsize(nat : nat) : Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = I16_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : n}(n) = ($inv_isize(n) : addrtype <: Jnn) + def $inv_jsize(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = I64_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn @@ -953,7 +929,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : n}(n) = $inv_jsize(n) + def $inv_jsizenn(8) = I8_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = I16_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = I64_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype @@ -1010,89 +992,93 @@ def $as_deftype(typeuse : typeuse) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } @@ -1115,73 +1101,73 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1276,11 +1262,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1315,9 +1301,9 @@ def $expanddt(deftype : deftype) : comptype -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_addrtype(numtype : numtype) : free +def $free_addrtype(addrtype : addrtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_addrtype{addrtype : addrtype}((addrtype : addrtype <: numtype)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_addrtype{addrtype : addrtype}(addrtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_numtype(numtype : numtype) : free @@ -1363,75 +1349,75 @@ def $free_typevar(typevar : typevar) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:484.1-484.36 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.1-490.36 def $free_heaptype(heaptype : heaptype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:532.1-532.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:538.1-538.65 def $free_heaptype{absheaptype : absheaptype}((absheaptype : absheaptype <: heaptype)) = $free_absheaptype(absheaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:533.1-533.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:539.1-539.53 def $free_heaptype{typeuse : typeuse}((typeuse : typeuse <: heaptype)) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:485.1-485.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 def $free_reftype(reftype : reftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:535.1-535.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:541.1-541.65 def $free_reftype{`null?` : null?, heaptype : heaptype}(REF_reftype(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:487.1-487.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.1-493.34 def $free_typeuse(typeuse : typeuse) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:535.1-535.52 def $free_typeuse{typevar : typevar}((typevar : typevar <: typeuse)) = $free_typevar(typevar) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:536.1-536.52 def $free_typeuse{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:488.1-488.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 def $free_valtype(valtype : valtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:537.1-537.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:543.1-543.52 def $free_valtype{numtype : numtype}((numtype : numtype <: valtype)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:538.1-538.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:544.1-544.52 def $free_valtype{vectype : vectype}((vectype : vectype <: valtype)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:539.1-539.52 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:545.1-545.52 def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:540.1-540.28 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:546.1-546.28 def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:490.1-490.40 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:496.1-496.40 def $free_resulttype(resulttype : resulttype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:542.1-542.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:548.1-548.69 def $free_resulttype{`valtype*` : valtype*}(`%`_resulttype(valtype*{valtype <- `valtype*`})) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.42 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.1-497.42 def $free_storagetype(storagetype : storagetype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:544.1-544.56 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-550.56 def $free_storagetype{valtype : valtype}((valtype : valtype <: storagetype)) = $free_valtype(valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:545.1-545.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:551.1-551.59 def $free_storagetype{packtype : packtype}((packtype : packtype <: storagetype)) = $free_packtype(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.38 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:498.1-498.38 def $free_fieldtype(fieldtype : fieldtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:547.1-547.71 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.71 def $free_fieldtype{`mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:493.1-493.36 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:499.1-499.36 def $free_comptype(comptype : comptype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:549.1-549.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:555.1-555.80 def $free_comptype{`fieldtype*` : fieldtype*}(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-550.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.65 def $free_comptype{fieldtype : fieldtype}(ARRAY_comptype(fieldtype)) = $free_fieldtype(fieldtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:551.1-551.121 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:557.1-557.121 def $free_comptype{resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1448,12 +1434,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -2584,18 +2570,22 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : idx, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } @@ -3269,6 +3259,8 @@ def $default_(valtype : valtype) : val? def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -5717,47 +5709,47 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') @@ -5784,34 +5776,34 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') @@ -7215,4034 +7207,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(32)} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(64)} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN(33)} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(32)} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(64)} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN(32)} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN(64)} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat))) - -- if (i!`%`_s33.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_labelidx.0):Bbyte => `%`_laneidx(l!`%`_labelidx.0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:({Tidchar} | {Tstring} | {","} | {";"} | {"["} | {"]"} | {"{"} | {"}"})+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} (Tnewline | Teof)} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:({" "} | Tformat | Tcomment | Tannot)*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {(Tspace | Ttoken)*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} ({"E"} | {"e"}) {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} ({"P"} | {"p"}) {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag(N)} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag(N)} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(8)} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(32)} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(64)} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(8)} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(16)} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(32)} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(64)} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN(32)} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN(64)} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : I, I' : I}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[x!`%`_idx.0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_idx.0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_idx.0] = ?()]) - -- if (?(id) = I.LABELS_I[x!`%`_idx.0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod (Bvar(syntax symdots) | Bvar(syntax B)) => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod (Tvar(syntax symdots) | Tvar(syntax T)) => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/02-let-intro.il b/spectec/test-middlend/specification.exp/02-let-intro.il new file mode 100644 index 0000000000..983ae06b68 --- /dev/null +++ b/spectec/test-middlend/specification.exp/02-let-intro.il @@ -0,0 +1,7209 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +def $sum(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + def $sum([]) = 0 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + def $sum{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +def $prod(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + def $prod([]) = 1 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + def $prod{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?() + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : n}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, `w*` : X*, n : n, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`{i : nat}(i : nat) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`{i : nat}(i : nat) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN{N : N}(N) = + | `%`{i : nat}(i : nat) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN{N : N}(N) = + | `%`{i : int}(i : int) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN{N : N}(N) = uN(N) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN(8) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN(16) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN(31) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN(64) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN(33) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN(64) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN(128) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = 23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = 52 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = 8 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = 11 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : N}(N) = $signif(N) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : N}(N) = $expon(N) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag{N : N}(N) = + | NORM{m : m, exp : exp}(m : m, exp : exp) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + | SUBNORM{m : m, exp : exp}(m : m) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + | INF + | NAN{m : m}(m : m) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN{N : N}(N) = + | POS{fNmag : fNmag(N)}(fNmag : fNmag(N)) + | NEG{fNmag : fNmag(N)}(fNmag : fNmag(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN(64) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN(N) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN(N) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : N, n : n}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN(N) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : N}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : N}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN{N : N}(N) = uN(N) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN(128) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`{i : nat}(i : nat) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $utf8(char*) : byte* + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC{funcidx : funcidx}(funcidx : funcidx) + | GLOBAL{globalidx : globalidx}(globalidx : globalidx) + | TABLE{tableidx : tableidx}(tableidx : tableidx) + | MEM{memidx : memidx}(memidx : memidx) + | TAG{tagidx : tagidx}(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +def $funcsxx(externidx*) : typeidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + def $funcsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +def $globalsxx(externidx*) : globalidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + def $globalsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +def $tablesxx(externidx*) : tableidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + def $tablesxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +def $memsxx(externidx*) : memidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + def $memsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +def $tagsxx(externidx*) : tagidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + def $tagsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES{`typeidx*` : typeidx*} typeidx*, + FUNCS{`funcidx*` : funcidx*} funcidx*, + GLOBALS{`globalidx*` : globalidx*} globalidx*, + TABLES{`tableidx*` : tableidx*} tableidx*, + MEMS{`memidx*` : memidx*} memidx*, + ELEMS{`elemidx*` : elemidx*} elemidx*, + DATAS{`dataidx*` : dataidx*} dataidx*, + LOCALS{`localidx*` : localidx*} localidx*, + LABELS{`labelidx*` : labelidx*} labelidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.1-172.29 +def $free_list(free*) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:177.1-177.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.57 + def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : funcidx}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : globalidx}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | REC{n : n}(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | BOT + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) + | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) + | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC{list : list(syntax subtype)}(list : list(syntax subtype)) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`{u64 : u64}(u64 : u64, u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG{tagtype : tagtype}(tagtype : tagtype) + | GLOBAL{globaltype : globaltype}(globaltype : globaltype) + | MEM{memtype : memtype}(memtype : memtype) + | TABLE{tabletype : tabletype}(tabletype : tabletype) + | FUNC{typeuse : typeuse}(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = I32_Inn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = I64_Inn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = F32_Fnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = F64_Fnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = I8_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = I16_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : Inn}(Inn) = $size((Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = I32_Inn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = I64_Inn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = I8_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = I16_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = F32_Fnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = F64_Fnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(8) = I8_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = I16_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = consttype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_consttype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ($lunpack(lanetype) : numtype <: consttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 +def $tagsxt(externtype*) : tagtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 + def $tagsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 + def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 +def $globalsxt(externtype*) : globaltype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 + def $globalsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 + def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 +def $memsxt(externtype*) : memtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 + def $memsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 + def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 +def $tablesxt(externtype*) : tabletype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 + def $tablesxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 + def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 +def $funcsxt(externtype*) : deftype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 + def $funcsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 + def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 +def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 + def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 +def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 + def $minus_recs([], []) = ([], []) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 + def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 + def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 +def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 + def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 + def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 +def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 + def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 + def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 + def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 + def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 + def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 + def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 + def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 +def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 +def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 +def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 +def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 + def $subst_deftype{qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_all_valtype(valtype : valtype, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : n, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 +def $free_subtype(subtype : subtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 +def $free_rectype(rectype : rectype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 +def $free_deftype(deftype : deftype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 + def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tagtype(tagtype : tagtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_globaltype(globaltype : globaltype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tabletype(tabletype : tabletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_elemtype(elemtype : elemtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_externtype(externtype : externtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tagtype : tagtype}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_moduletype(moduletype : moduletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_(numtype : numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax num_{Inn : Inn}((Inn : addrtype <: numtype)) = iN($sizenn((Inn : addrtype <: numtype))) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax num_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = fN($sizenn((Fnn : Fnn <: numtype))) + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_{Pnn : Pnn}(Pnn) = iN($psizenn(Pnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_(lanetype : lanetype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax lane_{numtype : numtype}((numtype : numtype <: lanetype)) = num_(numtype) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax lane_{packtype : packtype}((packtype : packtype <: lanetype)) = pack_(packtype) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsize((Jnn : Jnn <: lanetype))) + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_{Vnn : Vnn}(Vnn) = vN($vsize(Vnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_(storagetype : storagetype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax lit_{numtype : numtype}((numtype : numtype <: storagetype)) = num_(numtype) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax lit_{vectype : vectype}((vectype : vectype <: storagetype)) = vec_(vectype) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax lit_{packtype : packtype}((packtype : packtype <: storagetype)) = pack_(packtype) + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`{i : nat}(i : nat) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_(numtype : numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax unop_{Inn : Inn}((Inn : addrtype <: numtype)) = + | CLZ + | CTZ + | POPCNT + | EXTEND{sz : sz}(sz : sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax unop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_(numtype : numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax binop_{Inn : Inn}((Inn : addrtype <: numtype)) = + | ADD + | SUB + | MUL + | DIV{sx : sx}(sx : sx) + | REM{sx : sx}(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR{sx : sx}(sx : sx) + | ROTL + | ROTR + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax binop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_{Inn : Inn}((Inn : addrtype <: numtype)) = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_(numtype : numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax relop_{Inn : Inn}((Inn : addrtype <: numtype)) = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax relop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = + | EQ + | NE + | LT + | GT + | LE + | GE + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype)) = + | EXTEND{sx : sx}(sx : sx) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) < $sizenn2((Inn_2 : addrtype <: numtype))) + | WRAP + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) > $sizenn2((Inn_2 : addrtype <: numtype))) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype)) = + | CONVERT{sx : sx}(sx : sx) + | REINTERPRET + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype)) = + | TRUNC{sx : sx}(sx : sx) + | TRUNC_SAT{sx : sx}(sx : sx) + | REINTERPRET + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : addrtype <: numtype))) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype)) = + | PROMOTE + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) + | DEMOTE + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`{i : nat}(i : nat) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`{shape : shape, Jnn : Jnn}(shape : shape) + -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`{shape : shape}(shape : shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_(shape : shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + | ABS + | NEG + | POPCNT + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_(shape : shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + | ADD + | SUB + | ADD_SAT{sx : sx}(sx : sx) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + | SUB_SAT{sx : sx}(sx : sx) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + | MUL + -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) + | `AVGRU` + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + | `Q15MULR_SATS` + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + | `RELAXED_Q15MULRS` + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + | MIN{sx : sx}(sx : sx) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + | MAX{sx : sx}(sx : sx) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_(shape : shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + | RELAXED_LANESELECT + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + | RELAXED_MADD + | RELAXED_NMADD + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_(shape : shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + | EQ + | NE + | LT{sx : sx}(sx : sx) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + | GT{sx : sx}(sx : sx) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + | LE{sx : sx}(sx : sx) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + | GE{sx : sx}(sx : sx) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + | EQ + | NE + | LT + | GT + | LE + | GE + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) = + | SHL + | SHR{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = + | EXTADD_PAIRWISE{sx : sx}(sx : sx) + -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = + | EXTMUL{half : half, sx : sx}(half : half, sx : sx) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) + | `DOTS` + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + | `RELAXED_DOTS` + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = + | `RELAXED_DOT_ADDS` + -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__(shape_1 : shape, shape_2 : shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = + | EXTEND{half : half, sx : sx}(half : half, sx : sx) + -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = + | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = + | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = + | DEMOTE{zero : zero}(zero : zero) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) + | `PROMOTELOW` + -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) + + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN{u32 : u32} u32, + OFFSET{u64 : u64} u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_{Inn : Inn}((Inn : addrtype <: numtype)) = + | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_{Inn : Inn}((Inn : addrtype <: numtype)) = + | `%`{sz : sz}(sz : sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_{vectype : vectype}(vectype) = + | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) + -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + | SPLAT{sz : sz}(sz : sz) + | ZERO{sz : sz}(sz : sz) + -- if (sz!`%`_sz.0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) + | _IDX{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 +syntax addrref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) + | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) + | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) + | MEM{memaddr : memaddr}(memaddr : memaddr) + | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) + | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME{name : name} name, + ADDR{externaddr : externaddr} externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES{`deftype*` : deftype*} deftype*, + TAGS{`tagaddr*` : tagaddr*} tagaddr*, + GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, + MEMS{`memaddr*` : memaddr*} memaddr*, + TABLES{`tableaddr*` : tableaddr*} tableaddr*, + FUNCS{`funcaddr*` : funcaddr*} funcaddr*, + DATAS{`dataaddr*` : dataaddr*} dataaddr*, + ELEMS{`elemaddr*` : elemaddr*} elemaddr*, + EXPORTS{`exportinst*` : exportinst*} exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) + | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS{`val?*` : val?*} val?*, + MODULE{moduleinst : moduleinst} moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) + | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) + | BR{labelidx : labelidx}(labelidx : labelidx) + | BR_IF{labelidx : labelidx}(labelidx : labelidx) + | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) + | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | CALL{funcidx : funcidx}(funcidx : funcidx) + | CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) + | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | THROW{tagidx : tagidx}(tagidx : tagidx) + | THROW_REF + | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) + | LOCAL.GET{localidx : localidx}(localidx : localidx) + | LOCAL.SET{localidx : localidx}(localidx : localidx) + | LOCAL.TEE{localidx : localidx}(localidx : localidx) + | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) + | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) + | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) + | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) + | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) + | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) + | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) + | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) + | LOAD{numtype : numtype, `loadop_?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE{numtype : numtype, `storeop_?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD{vectype : vectype, `vloadop_?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | MEMORY.SIZE{memidx : memidx}(memidx : memidx) + | MEMORY.GROW{memidx : memidx}(memidx : memidx) + | MEMORY.FILL{memidx : memidx}(memidx : memidx) + | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) + | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) + | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.IS_NULL + | REF.AS_NON_NULL + | REF.EQ + | REF.TEST{reftype : reftype}(reftype : reftype) + | REF.CAST{reftype : reftype}(reftype : reftype) + | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) + | REF.I31 + | I31.GET{sx : sx}(sx : sx) + | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) + | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) + | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.LEN + | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) + | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | EXTERN.CONVERT_ANY + | ANY.CONVERT_EXTERN + | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) + | UNOP{numtype : numtype, unop_ : unop_(numtype)}(numtype : numtype, unop_ : unop_(numtype)) + | BINOP{numtype : numtype, binop_ : binop_(numtype)}(numtype : numtype, binop_ : binop_(numtype)) + | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) + | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) + | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) + | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) + | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) + | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) + | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) + | VUNOP{shape : shape, vunop_ : vunop_(shape)}(shape : shape, vunop_ : vunop_(shape)) + | VBINOP{shape : shape, vbinop_ : vbinop_(shape)}(shape : shape, vbinop_ : vbinop_(shape)) + | VTERNOP{shape : shape, vternop_ : vternop_(shape)}(shape : shape, vternop_ : vternop_(shape)) + | VTESTOP{shape : shape, vtestop_ : vtestop_(shape)}(shape : shape, vtestop_ : vtestop_(shape)) + | VRELOP{shape : shape, vrelop_ : vrelop_(shape)}(shape : shape, vrelop_ : vrelop_(shape)) + | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_(ishape)}(ishape : ishape, vshiftop_ : vshiftop_(ishape)) + | VBITMASK{ishape : ishape}(ishape : ishape) + | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_(bshape)}(bshape : bshape, vswizzlop_ : vswizzlop_(bshape)) + | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) + | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)) + | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)) + | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + -- if (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)) + | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) + | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) + | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | TRAP +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{numtype : numtype, c : lit_((numtype : numtype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{vectype : vectype, c : lit_((vectype : vectype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_blocktype(blocktype : blocktype) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 +def $shift_labelidxs(labelidx*) : labelidx* + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 + def $shift_labelidxs([]) = [] + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 + def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 +def $free_instr(instr : instr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 + def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 + def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 + def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 + def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 + def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 + def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 + def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 + def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 + def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 + def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 + def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 + def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 + def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 + def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 + def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 + def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 + def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 + def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 + def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 + def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 + def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 + def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 + def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 + def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 + def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 + def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 + def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 + def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 + def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 + def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 + def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 + def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 + def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 + def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 + def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 + def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 + def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 + def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 + def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 + def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 + def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 + def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 + def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 + def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 + def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 + def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 + def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 + def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 + def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 + def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 + def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 + def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 + def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 + def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 + def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 + def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 + def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 + def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 + def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 + def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 + def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 + def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 + def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 + def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 + def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 + def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 + def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 + def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 + def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 + def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 + def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 + def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 + def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 + def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 + def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 + def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 + def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 + def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 + def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 +def $free_block(instr*) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 + def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_expr(expr : expr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE{rectype : rectype}(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG{tagtype : tagtype}(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY{memtype : memtype}(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL{valtype : valtype}(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START{funcidx : funcidx}(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_type(type : type) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_tag(tag : tag) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_tag{tagtype : tagtype}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_global(global : global) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_global{globaltype : globaltype, expr : expr}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_table(table : table) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_table{tabletype : tabletype, expr : expr}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_local(local : local) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_func(func : func) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_func{typeidx : typeidx, `local*` : local*, expr : expr}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_datamode(datamode : datamode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_data(data : data) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elemmode(elemmode : elemmode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elem(elem : elem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : funcidx}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_import(import : import) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_module(module : module) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $funcidx_module(module : module) : funcidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $dataidx_funcs(func*) : dataidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES{`deftype*` : deftype*} deftype*, + RECS{`subtype*` : subtype*} subtype*, + TAGS{`tagtype*` : tagtype*} tagtype*, + GLOBALS{`globaltype*` : globaltype*} globaltype*, + MEMS{`memtype*` : memtype*} memtype*, + TABLES{`tabletype*` : tabletype*} tabletype*, + FUNCS{`deftype*` : deftype*} deftype*, + DATAS{`datatype*` : datatype*} datatype*, + ELEMS{`elemtype*` : elemtype*} elemtype*, + LOCALS{`localtype*` : localtype*} localtype*, + LABELS{`resulttype*` : resulttype*} resulttype*, + RETURN{`resulttype?` : resulttype?} resulttype?, + REFS{`funcidx*` : funcidx*} funcidx* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 +def $with_locals(context : context, localidx*, localtype*) : context + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 + def $with_locals{C : context}(C, [], []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : idx, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 + def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 +def $clos_deftypes(deftype*) : deftype* + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 + def $clos_deftypes([]) = [] + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 + def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_valtype(context : context, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_deftype(context : context, deftype : deftype) : deftype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_tagtype(context : context, tagtype : tagtype) : tagtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_externtype(context : context, externtype : externtype) : externtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_moduletype(context : context, moduletype : moduletype) : moduletype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidxnat = + | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype}: + `%~~%`(deftype, comptype) + -- if ($expanddt(deftype) = comptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{deftype : deftype, x : idx, i : nat}((deftype : deftype <: typeuse), x, i) = true + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeidx : typeidx, x : idx, i : nat}(_IDX_typeuse(typeidx), x, i) = (typeidx!`%`_typeidx.0 < x!`%`_idx.0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : n, x : idx, i : nat}(REC_typeuse(j), x, i) = (j < i) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $unrollht(context : context, heaptype : heaptype) : subtype + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- Numtype_ok: `%|-%:OK`(C, numtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- Vectype_ok: `%|-%:OK`(C, vectype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- Deftype_ok: `%|-%:OK`(C, deftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- Valtype_ok: `%|-%:OK`(C, valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- Packtype_ok: `%|-%:OK`(C, packtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: + `%|-%:%`(C, SUB_subtype(FINAL_final?{}, _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if (x!`%`_idx.0 < x_0!`%`_idx.0))*{x <- `x*`} + -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1)))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 + rule _rec2{C : context, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 + rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: + `%|-%:%`(C, SUB_subtype(FINAL_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} + -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:91.1-91.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 + rule empty{C : context, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 + rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:95.1-95.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype), heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 + rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- Expand: `%~~%`(deftype, comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(MUT_mut?{}, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_labelidx.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Inn : Inn}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), `%`_num_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Vnn : Vnn}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- if ($default_(t) =/= ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_labelidx.0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)])) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule ref.null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule ref.func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- if (C.FUNCS_context[x!`%`_idx.0] = dt) + -- if (x <- C.REFS_context) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule ref.i31{C : context}: + `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule ref.is_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule ref.as_non_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule ref.eq{C : context}: + `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule ref.test{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule ref.cast{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule i31.get{C : context, sx : sx}: + `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 + rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 + rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule array.set{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule array.len{C : context}: + `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule array.fill{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule local.get{C : context, x : idx, t : valtype}: + `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule local.set{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule local.tee{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule global.set{C : context, x : idx, t : valtype}: + `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule elem.drop{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[x!`%`_idx.0] = rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule data.drop{C : context, x : idx}: + `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_(nt)}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_(V128_Vnn)}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- if ($default_(t) = ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_(nt)}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_(vt)}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.null{C : context, ht : heaptype}: + `%|-%CONST`(C, REF.NULL_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.i31{C : context}: + `%|-%CONST`(C, REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.func{C : context, x : idx}: + `%|-%CONST`(C, REF.FUNC_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new_default{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_default{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_fixed{C : context, x : idx, n : n}: + `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule any.convert_extern{C : context}: + `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule extern.convert_any{C : context}: + `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule global.get{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_((Inn : addrtype <: numtype))}: + `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [ADD_binop_ SUB_binop_ MUL_binop_]) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- if (x!`%`_idx.0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(MUT_mut?{}, t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- Memtype_ok: `%|-%:OK`(C, memtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_idx.0]) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- if (C.TAGS_context[x!`%`_idx.0] = jt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[x!`%`_idx.0] = gt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- if (C.MEMS_context[x!`%`_idx.0] = mt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- if (C.TABLES_context[x!`%`_idx.0] = tt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- if (C.FUNCS_context[x!`%`_idx.0] = dt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: + `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) + -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`{i : nat}(i : nat) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`{i : nat}(i : nat) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][i!`%`_relaxed2.0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN(N)) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN(N)) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN(N)) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN(N)) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_(numtype)) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_(vectype)) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_(storagetype)) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_((Cnn : Cnn <: storagetype))) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_(numtype) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_(vectype) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_(storagetype) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_((Cnn : Cnn <: storagetype)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $signed_(N : N, nat : nat) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : N, i : nat}(N, i) = (i : nat <:> int) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : N, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_signed_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : N, i : int}(N, i) = (i : int <:> nat) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : N, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_(lanetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : N, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : N, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = (if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iextend_(N : N, M : M, sx : sx, iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : N, M : M, i : iN(N)}(N, M, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ M))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : N, M : M, i : iN(N)}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() + -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_iN.0 <= i_2!`%`_iN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_iN.0 > i_2!`%`_iN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = (if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_iN.0 >= i_2!`%`_iN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_iN.0 < i_2!`%`_iN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = (if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN(N), u32 : u32) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN(N)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN(N)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN(N), fN : fN(N)) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN(N), fN : fN(N)) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN(N), fN : fN(N)) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN(N), fN : fN(N)) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN(N), fN : fN(N)) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN(N), fN : fN(N)) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN(M)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN(M)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN(M)) : fN(N)* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN(M)) : fN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_($lunpack(lanetype))) : lane_(lanetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{numtype : numtype, c : num_($lunpack((numtype : numtype <: lanetype)))}((numtype : numtype <: lanetype), c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{packtype : packtype, c : num_($lunpack((packtype : packtype <: lanetype)))}((packtype : packtype <: lanetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_(($cunpack(storagetype) : consttype <: storagetype))) : lit_(storagetype) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{consttype : consttype, c : lit_(($cunpack((consttype : consttype <: storagetype)) : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{packtype : packtype, c : lit_(($cunpack((packtype : packtype <: storagetype)) : consttype <: storagetype))}((packtype : packtype <: storagetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(lanetype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{numtype : numtype, c : lane_((numtype : numtype <: lanetype))}((numtype : numtype <: lanetype), c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{packtype : packtype, c : lane_((packtype : packtype <: lanetype))}((packtype : packtype <: lanetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_(storagetype)) : lit_(($cunpack(storagetype) : consttype <: storagetype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{consttype : consttype, c : lit_((consttype : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{packtype : packtype, c : lit_((packtype : packtype <: storagetype))}((packtype : packtype <: storagetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : num_(numtype)* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : Inn, i : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), CLZ_unop_, i) = [$iclz_($sizenn((Inn : addrtype <: numtype)), i)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : Inn, i : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), CTZ_unop_, i) = [$ictz_($sizenn((Inn : addrtype <: numtype)), i)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : Inn, i : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : addrtype <: numtype)), i)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : Inn, M : M, i : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), EXTEND_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEG_unop_, f) = $fneg_($sizenn((Fnn : Fnn <: numtype)), f) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SQRT_unop_, f) = $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), CEIL_unop_, f) = $fceil_($sizenn((Fnn : Fnn <: numtype)), f) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), FLOOR_unop_, f) = $ffloor_($sizenn((Fnn : Fnn <: numtype)), f) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), TRUNC_unop_, f) = $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEAREST_unop_, f) = $fnearest_($sizenn((Fnn : Fnn <: numtype)), f) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : num_(numtype)* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), ADD_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), SUB_binop_, i_1, i_2) = [$isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), MUL_binop_, i_1, i_2) = [$imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), DIV_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), REM_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), AND_binop_, i_1, i_2) = [$iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), OR_binop_, i_1, i_2) = [$ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), ROTR_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ADD_binop_, f_1, f_2) = $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SUB_binop_, f_1, f_2) = $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MUL_binop_, f_1, f_2) = $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), DIV_binop_, f_1, f_2) = $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MIN_binop_, f_1, f_2) = $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MAX_binop_, f_1, f_2) = $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), COPYSIGN_binop_, f_1, f_2) = $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_(numtype), num_ : num_(numtype)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{Inn : Inn, i : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), EQZ_testop_, i) = $ieqz_($sizenn((Inn : addrtype <: numtype)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), EQ_relop_, i_1, i_2) = $ieq_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), NE_relop_, i_1, i_2) = $ine_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), LT_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), GT_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), LE_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : addrtype <: numtype)), i_2 : num_((Inn : addrtype <: numtype))}((Inn : addrtype <: numtype), GE_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), EQ_relop_, f_1, f_2) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NE_relop_, f_1, f_2) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LT_relop_, f_1, f_2) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GT_relop_, f_1, f_2) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LE_relop_, f_1, f_2) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GE_relop_, f_1, f_2) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_1, numtype_2), num_ : num_(numtype_1)) : num_(numtype_2)* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : addrtype <: numtype))}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), EXTEND_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : addrtype <: numtype))}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), WRAP_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), TRUNC_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), TRUNC_SAT_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : addrtype <: numtype))}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), CONVERT_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), PROMOTE_cvtop__, f_1) = $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), DEMOTE_cvtop__, f_1) = $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : addrtype <: numtype))}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), REINTERPRET_cvtop__, i_1) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] + -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), f_1)] + -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?(zero) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?() + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?(LOW_half) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = (if (i!`%`_iN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_iN.0] else `%`_iN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = (if (i!`%`_iN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_iN.0] else (if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.0)*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + -- if ($isize(Inn) = $fsize(Fnn)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0))!`%`_u32.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : Vnn, v : vec_(Vnn)}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn), v_3 : vec_(Vnn)}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx), c_1) = [c] + -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] + -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : addrtype <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : addrtype <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__, c_1) = c*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`}) {v} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOT_ADDS`_vextternop__, c_1, c_2, c_3) = c + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(S_sx), c') {c''} + -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), ADD_vbinop_, c'', c_3)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax ref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) + | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE{tagtype : tagtype} tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE{globaltype : globaltype} globaltype, + VALUE{val : val} val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE{memtype : memtype} memtype, + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE{tabletype : tabletype} tabletype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE{deftype : deftype} deftype, + MODULE{moduleinst : moduleinst} moduleinst, + CODE{funccode : funccode} funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE{elemtype : elemtype} elemtype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) + | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG{tagaddr : tagaddr} tagaddr, + FIELDS{`val*` : val*} val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS{`taginst*` : taginst*} taginst*, + GLOBALS{`globalinst*` : globalinst*} globalinst*, + MEMS{`meminst*` : meminst*} meminst*, + TABLES{`tableinst*` : tableinst*} tableinst*, + FUNCS{`funcinst*` : funcinst*} funcinst*, + DATAS{`datainst*` : datainst*} datainst*, + ELEMS{`eleminst*` : eleminst*} eleminst*, + STRUCTS{`structinst*` : structinst*} structinst*, + ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, + EXNS{`exninst*` : exninst*} exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`{store : store, frame : frame}(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{packtype : packtype, i : num_(I32_numtype)}((packtype : packtype <: storagetype), CONST_val(I32_numtype, i)) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{packtype : packtype, sx : sx, i : iN($psizenn(packtype))}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, $extend__($psize(packtype), 32, sx, i)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 +def $tagsxa(externaddr*) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 + def $tagsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 + def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 +def $globalsxa(externaddr*) : globaladdr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 + def $globalsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 + def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 +def $memsxa(externaddr*) : memaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 + def $memsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 + def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 +def $tablesxa(externaddr*) : tableaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 + def $tablesxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 + def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 +def $funcsxa(externaddr*) : funcaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 + def $funcsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 + def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_idx.0] = ?(v)]) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{s : store, f : frame, x : idx, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{s : store, f : frame, x : idx, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{s : store, f : frame, x : idx, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{s : store, f : frame, x : idx, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{s : store, f : frame, x : idx, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growtable{tableinst : tableinst, n : n, r : ref, tableinst' : tableinst, at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : u64}(tableinst, n, r) = tableinst' + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) + -- if (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) + -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growmem(meminst : meminst, nat : nat) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = meminst' + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if ((i'!`%`_u64.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_(nt)}: + `%|-%:%`(s, CONST_num(nt, c), nt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_(vt)}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 + rule null{s : store, ht : heaptype, ht' : heaptype}: + `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 + rule i31{s : store, i : u31}: + `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 + rule host{s : store, a : addr}: + `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 + rule extern{s : store, addrref : addrref}: + `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- Num_ok: `%|-%:%`(s, num, nt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- Vec_ok: `%|-%:%`(s, vec, vt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- Ref_ok: `%|-%:%`(s, ref, rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- if (s.FUNCS_store[a] = funcinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([(val : val <: instr) DROP_instr], []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- if (c!`%`_num_.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- if (c!`%`_num_.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if (c!`%`_num_.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if (c!`%`_num_.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if (l!`%`_labelidx.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if (l!`%`_labelidx.0 > 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_(I32_numtype), l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- if (c!`%`_num_.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_(I32_numtype), l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- if (c!`%`_num_.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[i!`%`_num_.0])]) + -- if (i!`%`_num_.0 < |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.tee{val : val, x : idx}: + `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.i31{i : num_(I32_numtype)}: + `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, i))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref}: + `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) + -- otherwise + -- if (ref_1 = ref_2) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{ht : heaptype, sx : sx}: + `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{addrref : addrref}: + `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{addrref : addrref}: + `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- if (c <- $unop_(nt, unop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_(nt), unop : unop_(nt)}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- if ($unop_(nt, unop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt), c : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- if (c <- $binop_(nt, binop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- if ($binop_(nt, binop, c_1, c_2) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_(nt), testop : testop_(nt), c : num_(I32_numtype)}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- if (c = $testop_(nt, testop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), relop : relop_(nt), c : num_(I32_numtype)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- if (c = $relop_(nt, relop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2), c : num_(nt_2)}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2)}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), vvbinop : vvbinop, c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), vvternop : vvternop, c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- if (c = $inez_($vsize(V128_vectype), c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vunop_(sh, vunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- if ($vunop_(sh, vunop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) + -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_(V128_Vnn), i : num_(I32_numtype), sh : ishape, vshiftop : vshiftop_(sh), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshiftop_(sh, vshiftop, c_1, i)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_(V128_Vnn), sh : ishape, c : num_(I32_numtype)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- if (c = $vbitmaskop_(sh, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, swizzlop : vswizzlop_(sh), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, `i*` : laneidx*, c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__(sh_1, sh_2), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__(sh_1, sh_2), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_(V128_Vnn), sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__(sh_1, sh_2), c : vec_(V128_Vnn)}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +def $blocktype_(state : state, blocktype : blocktype) : instrtype + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- if ($local(z, x) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule global.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- if ($global(z, x).VALUE_globalinst = val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) + -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.FILL_instr(x)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + -- otherwise + -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.INIT_instr(x, y)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), $extend__(n, $size((Inn : addrtype <: numtype)), sx, c))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(M)*, `k*` : nat*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.FILL_instr(x)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + -- otherwise + -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.INIT_instr(x, y)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null-idx`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.func{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1))]) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0))]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_u32.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($default_($unpack(zt)) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, ht : heaptype, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.FILL_instr(x)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), ht_2 : heaptype, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) + -- otherwise + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) + -- otherwise + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_ELEM_instr(x, y)]) + -- otherwise + -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_DATA_instr(x, y)]) + -- otherwise + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[x!`%`_idx.0], FIELDS val^n{val <- `val*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 + rule local.set{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 + rule global.set{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 + rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) + -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|))])) + -- if (ti = $growtable($table(z, x), n, ref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 + rule elem.drop{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 + rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : addrtype <: numtype)), n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : addrtype <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, c))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 + rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + N) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])) + -- if (mi = $growmem($mem(z, x), n)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 + rule data.drop{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 + rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 + rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 + rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 + rule `array.set-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 + rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 + rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} + -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) + -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- if (taginst = {TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- if (globalinst = {TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : memaddr, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- if (datainst = {BYTES byte*{byte <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} + -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) + -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) + -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : idx, `b*` : byte*, n : n}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : idx, `b*` : byte*, n : n, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} + -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} + -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} + diff --git a/spectec/test-middlend/specification.exp/02-typefamily-removal.il b/spectec/test-middlend/specification.exp/03-typefamily-removal.il similarity index 60% rename from spectec/test-middlend/specification.exp/02-typefamily-removal.il rename to spectec/test-middlend/specification.exp/03-typefamily-removal.il index 312e93ae6d..c05eab0bbc 100644 --- a/spectec/test-middlend/specification.exp/02-typefamily-removal.il +++ b/spectec/test-middlend/specification.exp/03-typefamily-removal.il @@ -286,36 +286,8 @@ syntax char = | `%`{i : nat}(i : nat) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) - -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) - -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) - -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = @@ -521,6 +493,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : uN(32)}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : uN(32)}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN(32)}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -896,7 +870,9 @@ def $inv_jsize(nat : nat) : Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = I16_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ($inv_isize(n) : addrtype <: Jnn) + def $inv_jsize(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = I64_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn @@ -953,7 +929,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + def $inv_jsizenn(8) = I8_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = I16_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = I64_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype @@ -1010,91 +992,95 @@ def $as_deftype(typeuse : typeuse) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : uN(32), `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1115,73 +1101,73 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1276,11 +1262,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1288,36 +1274,36 @@ def $subst_all_deftypes(deftype*, typeuse*) : deftype* def $rollrt(typeidx : typeidx, rectype : rectype) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $rollrt{x : uN(32), rectype : rectype, `subtype*` : subtype*, `i*` : nat*, n : nat}(x, rectype) = REC_rectype(`%`_list($subst_subtype(subtype, _IDX_typevar(`%`_typeidx((x!`%`_uN.0 + i)))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1448,12 +1434,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -2713,7 +2699,7 @@ def $free_instr(instr : instr) : free def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -2913,51 +2899,55 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : uN(32), `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : uN(32), `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_uN.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -3598,6 +3588,8 @@ def $default_(valtype : valtype) : val? def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -5219,127 +5211,127 @@ def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : uN(128), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : uN(128), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : uN(128), v_2 : uN(128), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : uN(128), v_2 : uN(128), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : uN(128), v_2 : uN(128), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : uN(128), v_2 : uN(128), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_1)))), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_1)))), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : uN(128), v_2 : uN(128), v_3 : uN(128), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)), !($proj_lane__2(Jnn, c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)), !($proj_lane__2(Jnn, c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : uN(128), v_2 : uN(128), v_3 : uN(128), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_1)))), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_2)))), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_1)))), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_2)))), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : uN(128), v_2 : uN(128), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : uN(128), v_2 : uN(128), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn, c_1)), !($proj_lane__2(Jnn, c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : uN(128), v_2 : uN(128), Inn : addrtype, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_1)))), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_1)))), !($proj_num__1(Fnn, !($proj_lane__0((Fnn : Fnn <: numtype), c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : uN(128), i : uN(32), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : uN(128), i : uN(32), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn, c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn, c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN(128), c : uN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(Jnn, c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : uN(128), v_2 : uN(128), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(Jnn, c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(Jnn, c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(Jnn, c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN(128), v_2 : uN(128), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* @@ -5468,42 +5460,42 @@ def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN($lsize((Jnn_1 : Jnn <: lanetype))), c : uN($lsize((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN($lsize((Jnn_1 : Jnn <: lanetype))), c : fN($size((Fnn_2 : Fnn <: numtype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN($size((Fnn_1 : Fnn <: numtype))), `c?` : iN($lsizenn2((Inn_2 : addrtype <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN($size((Fnn_1 : Fnn <: numtype))), `c?` : iN($lsizenn2((Inn_2 : addrtype <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN($size((Fnn_1 : Fnn <: numtype))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN($size((Fnn_1 : Fnn <: numtype))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M))), v_1 : uN(128), v : uN(128), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : uN(128), v : uN(128), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : uN(128), v : uN(128), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -5534,11 +5526,11 @@ def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V1 def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN(128), v_2 : uN(128), v : uN(128), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn_1, c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn_1, c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn_1, c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn_1, c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* @@ -5550,9 +5542,9 @@ def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : uN(128), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn_1, c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(Jnn_1, c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) @@ -5575,11 +5567,11 @@ def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : uN(8), k : uN(8), v_1 : uN(128), v_2 : uN(128), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(Jnn_1, c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(Jnn_1, c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(Jnn_1, c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(Jnn_1, c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* @@ -5600,9 +5592,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN(128), c_2 : uN(128), c_3 : uN(128), c : uN(128), Jnn : Jnn, M : nat, c' : uN(128), c'' : uN(128)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -6017,7 +6009,7 @@ def $add_exninst(state : state, exninst*) : state def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN(64), `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN(64)}(tableinst, n, r) = tableinst' - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} @@ -6026,7 +6018,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst def $growmem(meminst : meminst, nat : nat) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN(64), `j?` : u64?, `b*` : byte*, i' : uN(64)}(meminst, n) = meminst' - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} @@ -6046,47 +6038,47 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') @@ -6113,34 +6105,34 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') @@ -6151,31 +6143,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) @@ -7298,8 +7290,8 @@ def $alloctypes(type*) : deftype* def $alloctypes([]) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN(32)}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) -- if (x!`%`_uN.0 = |deftype'*{deftype' <- `deftype'*`}|) } @@ -7319,8 +7311,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -7338,8 +7330,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -7357,8 +7349,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store}(s, []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -7376,8 +7368,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -7395,8 +7387,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store}(s, [], [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -7414,8 +7406,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -7433,8 +7425,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store}(s, [], []) = (s, []) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -7459,27 +7451,27 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -7510,9 +7502,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -7521,21 +7513,21 @@ def $instantiate(store : store, module : module, externaddr*) : config def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config @@ -7544,4034 +7536,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(32)} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(64)} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN(33)} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(32)} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN(64)} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN(32)} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN(64)} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if (x33!`%`_sN.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_sN.0 : int <:> nat))) - -- if (i!`%`_sN.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_uN.0):Bbyte => `%`_laneidx(l!`%`_uN.0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_uN.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag(N)} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag(N)} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(8)} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(32)} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN(64)} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(8)} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(16)} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(32)} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(64)} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN(32)} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN(64)} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[x!`%`_uN.0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_uN.0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_uN.0] = ?()]) - -- if (?(id) = I.LABELS_I[x!`%`_uN.0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/03-remove-indexed-types.il b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il similarity index 68% rename from spectec/test-middlend/specification.exp/03-remove-indexed-types.il rename to spectec/test-middlend/specification.exp/04-remove-indexed-types.il index c80c971534..66d26644ca 100644 --- a/spectec/test-middlend/specification.exp/03-remove-indexed-types.il +++ b/spectec/test-middlend/specification.exp/04-remove-indexed-types.il @@ -349,47 +349,8 @@ relation wf_char: `%`(char) `%`(`%`_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) - -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) - -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) - -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) - -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = @@ -655,6 +616,9 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1311,7 +1275,9 @@ def $inv_jsize(nat : nat) : Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = I16_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ($inv_isize(n) : addrtype <: Jnn) + def $inv_jsize(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = I64_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn @@ -1368,7 +1334,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = $inv_jsize(n) + def $inv_jsizenn(8) = I8_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = I16_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = I32_Jnn + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = I64_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype @@ -1428,94 +1400,98 @@ def $as_deftype(typeuse : typeuse) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1536,82 +1512,82 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1724,11 +1700,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1737,40 +1713,40 @@ def $rollrt(typeidx : typeidx, rectype : rectype) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $rollrt{x : uN, rectype : rectype, `subtype*` : subtype*, `i*` : nat*, n : nat}(x, rectype) = REC_rectype(`%`_list($subst_subtype(subtype, _IDX_typevar(`%`_typeidx((x!`%`_uN.0 + i)))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1908,12 +1884,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -4448,7 +4424,7 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4810,51 +4786,55 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : uN, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_uN.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5761,6 +5741,8 @@ def $default_(valtype : valtype) : val? -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -8041,8 +8023,8 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8051,8 +8033,8 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* @@ -8062,9 +8044,9 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8074,9 +8056,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8085,9 +8067,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* @@ -8096,9 +8078,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -8107,10 +8089,10 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -8119,10 +8101,10 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -8131,9 +8113,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8142,9 +8124,9 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -8154,9 +8136,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8166,8 +8148,8 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8176,8 +8158,8 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8187,7 +8169,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8198,9 +8180,9 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8210,9 +8192,9 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* @@ -8387,27 +8369,27 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lan ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8419,8 +8401,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -8430,8 +8412,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -8441,8 +8423,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8486,11 +8468,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* @@ -8509,9 +8491,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ @@ -8547,11 +8529,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* @@ -8594,9 +8576,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9274,7 +9256,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} @@ -9286,7 +9268,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} @@ -9310,9 +9292,9 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- wf_store: `%`(s) @@ -9321,14 +9303,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.I31_NUM_ref(i)) -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9336,7 +9318,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9344,7 +9326,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9352,7 +9334,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- wf_store: `%`(s) @@ -9361,14 +9343,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- wf_store: `%`(s) @@ -9377,7 +9359,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- wf_store: `%`(s) @@ -9416,44 +9398,44 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- wf_store: `%`(s) @@ -9468,31 +9450,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) @@ -11279,8 +11261,8 @@ def $alloctypes(type*) : deftype* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) -- if (x!`%`_uN.0 = |deftype'*{deftype' <- `deftype'*`}|) } @@ -11304,8 +11286,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11327,8 +11309,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11350,8 +11332,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11373,8 +11355,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11396,8 +11378,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11419,8 +11401,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11442,8 +11424,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11491,27 +11473,27 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -11556,9 +11538,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11585,21 +11567,21 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config @@ -11610,4162 +11592,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if (x33!`%`_sN.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_sN.0 : int <:> nat))) - -- if (i!`%`_sN.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_uN.0):Bbyte => `%`_laneidx(l!`%`_uN.0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_uN.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[x!`%`_uN.0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_uN.0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_uN.0] = ?()]) - -- if (?(id) = I.LABELS_I[x!`%`_uN.0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{rectype : rectype}: - `%`(TYPE_decl(rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{tagtype : tagtype}: - `%`(TAG_decl(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_decl(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{memtype : memtype}: - `%`(MEMORY_decl(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{tabletype : tabletype, expr : expr}: - `%`(TABLE_decl(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{`byte*` : byte*, datamode : datamode}: - `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{funcidx : funcidx}: - `%`(START_decl(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{name : name, externidx : externidx}: - `%`(EXPORT_decl(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{n : n, `instr*` : instr*}: - `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{n : n, frame : frame}: - `%`(`FRAME_%{%}`_callframe(n, frame)) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/04-totalize.il b/spectec/test-middlend/specification.exp/05-totalize.il similarity index 67% rename from spectec/test-middlend/specification.exp/04-totalize.il rename to spectec/test-middlend/specification.exp/05-totalize.il index c456679fa7..e48be9d29a 100644 --- a/spectec/test-middlend/specification.exp/04-totalize.il +++ b/spectec/test-middlend/specification.exp/05-totalize.il @@ -42,11 +42,12 @@ def $prod(nat*) : nat } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $opt_(syntax X, X*) : X? +def $opt_(syntax X, X*) : X?? ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() + def $opt_{syntax X}(syntax X, []) = ?(?()) ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec rec { @@ -227,28 +228,30 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = $signif(N) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = $expon(N) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -325,7 +328,7 @@ def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -349,47 +352,8 @@ relation wf_char: `%`(char) `%`(`%`_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) - -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) - -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) - -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) - -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = @@ -655,6 +619,9 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1219,29 +1186,32 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = I32_Inn + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = F32_Fnn + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = I8_Jnn + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = I16_Jnn + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = I32_Jnn + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = I64_Jnn + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1274,13 +1244,14 @@ def $lsize(lanetype : lanetype) : nat def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) + def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = ?($size(numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) + def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = ?($vsize(vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) + def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = ?($psize(packtype)) + def $zsize{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1312,7 +1283,9 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ?((!($inv_isize(n)) : addrtype <: Jnn)) + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) def $inv_jsize{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1371,7 +1344,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = ?(!($inv_jsize(n))) + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) def $inv_jsizenn{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1428,101 +1407,106 @@ def $diffrt(reftype : reftype, reftype : reftype) : reftype -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt + def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = ?(dt) + def $as_deftype{x0 : typeuse}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1543,82 +1527,82 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1731,11 +1715,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1744,40 +1728,40 @@ def $rollrt(typeidx : typeidx, rectype : rectype) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $rollrt{x : uN, rectype : rectype, `subtype*` : subtype*, `i*` : nat*, n : nat}(x, rectype) = REC_rectype(`%`_list($subst_subtype(subtype, _IDX_typevar(`%`_typeidx((x!`%`_uN.0 + i)))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1915,12 +1899,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -4455,7 +4439,7 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4817,51 +4801,55 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : uN, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_uN.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5726,7 +5714,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5735,7 +5723,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5768,6 +5756,8 @@ def $default_(valtype : valtype) : val? -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -6040,7 +6030,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 @@ -7425,11 +7415,12 @@ def $inv_signed_(N : N, int : int) : nat -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx? +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() + def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) + def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_ @@ -8048,8 +8039,8 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8058,8 +8049,8 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* @@ -8069,9 +8060,9 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8081,9 +8072,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8092,9 +8083,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* @@ -8103,9 +8094,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -8114,10 +8105,10 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -8126,10 +8117,10 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -8138,9 +8129,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8149,9 +8140,9 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -8161,9 +8152,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8173,8 +8164,8 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8183,8 +8174,8 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8194,7 +8185,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8205,9 +8196,9 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8217,9 +8208,9 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* @@ -8394,27 +8385,27 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lan ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8426,8 +8417,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -8437,8 +8428,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -8448,8 +8439,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8493,11 +8484,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* @@ -8516,9 +8507,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ @@ -8554,11 +8545,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* @@ -8601,9 +8592,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9001,20 +8992,22 @@ def $Ki : nat def $Ki = 1024 ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval +def $packfield_(storagetype : storagetype, val : val) : fieldval? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) + def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val + def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9281,7 +9274,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} @@ -9294,7 +9287,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} @@ -9319,9 +9312,9 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- wf_store: `%`(s) @@ -9330,14 +9323,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.I31_NUM_ref(i)) -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9345,7 +9338,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9353,7 +9346,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9361,7 +9354,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- wf_store: `%`(s) @@ -9370,14 +9363,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- wf_store: `%`(s) @@ -9386,7 +9379,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- wf_store: `%`(s) @@ -9425,44 +9418,44 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- wf_store: `%`(s) @@ -9477,31 +9470,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) @@ -10739,7 +10732,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0])) : val <: instr)]) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -10776,7 +10769,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: @@ -10786,7 +10779,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: @@ -10803,7 +10796,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0])) : val <: instr)]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -10902,7 +10895,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: @@ -10921,7 +10914,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -10985,7 +10978,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -10996,20 +10989,20 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -11065,7 +11058,7 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -11198,10 +11191,10 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: @@ -11211,9 +11204,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -11223,9 +11216,9 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: @@ -11242,9 +11235,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11288,8 +11281,8 @@ def $alloctypes(type*) : deftype* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) -- if (x!`%`_uN.0 = |deftype'*{deftype' <- `deftype'*`}|) } @@ -11313,8 +11306,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11336,8 +11329,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11359,8 +11352,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11382,8 +11375,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11405,8 +11398,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11428,8 +11421,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11451,8 +11444,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11500,27 +11493,27 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -11565,9 +11558,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11594,21 +11587,21 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config @@ -11619,4162 +11612,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if (x33!`%`_sN.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_sN.0 : int <:> nat))) - -- if (i!`%`_sN.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_uN.0):Bbyte => `%`_laneidx(l!`%`_uN.0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_uN.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[x!`%`_uN.0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_uN.0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_uN.0] = ?()]) - -- if (?(id) = I.LABELS_I[x!`%`_uN.0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{rectype : rectype}: - `%`(TYPE_decl(rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{tagtype : tagtype}: - `%`(TAG_decl(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_decl(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{memtype : memtype}: - `%`(MEMORY_decl(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{tabletype : tabletype, expr : expr}: - `%`(TABLE_decl(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{`byte*` : byte*, datamode : datamode}: - `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{funcidx : funcidx}: - `%`(START_decl(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{name : name, externidx : externidx}: - `%`(EXPORT_decl(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{n : n, `instr*` : instr*}: - `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{n : n, frame : frame}: - `%`(`FRAME_%{%}`_callframe(n, frame)) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/05-else.il b/spectec/test-middlend/specification.exp/06-else.il similarity index 69% rename from spectec/test-middlend/specification.exp/05-else.il rename to spectec/test-middlend/specification.exp/06-else.il index 847de98501..24a353aa66 100644 --- a/spectec/test-middlend/specification.exp/05-else.il +++ b/spectec/test-middlend/specification.exp/06-else.il @@ -42,11 +42,12 @@ def $prod(nat*) : nat } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $opt_(syntax X, X*) : X? +def $opt_(syntax X, X*) : X?? ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() + def $opt_{syntax X}(syntax X, []) = ?(?()) ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec rec { @@ -227,28 +228,30 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = $signif(N) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = $expon(N) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -325,7 +328,7 @@ def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -349,47 +352,8 @@ relation wf_char: `%`(char) `%`(`%`_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte(ch!`%`_char.0)) - -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) - -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) - -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) - -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = @@ -655,6 +619,9 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1219,29 +1186,32 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = I32_Inn + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = F32_Fnn + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = I8_Jnn + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = I16_Jnn + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = I32_Jnn + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = I64_Jnn + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1274,13 +1244,14 @@ def $lsize(lanetype : lanetype) : nat def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) + def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = ?($size(numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) + def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = ?($vsize(vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) + def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = ?($psize(packtype)) + def $zsize{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1312,7 +1283,9 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ?((!($inv_isize(n)) : addrtype <: Jnn)) + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) def $inv_jsize{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1371,7 +1344,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = ?(!($inv_jsize(n))) + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) def $inv_jsizenn{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1428,101 +1407,106 @@ def $diffrt(reftype : reftype, reftype : reftype) : reftype -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt + def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = ?(dt) + def $as_deftype{x0 : typeuse}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1543,82 +1527,82 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1731,11 +1715,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1744,40 +1728,40 @@ def $rollrt(typeidx : typeidx, rectype : rectype) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $rollrt{x : uN, rectype : rectype, `subtype*` : subtype*, `i*` : nat*, n : nat}(x, rectype) = REC_rectype(`%`_list($subst_subtype(subtype, _IDX_typevar(`%`_typeidx((x!`%`_uN.0 + i)))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1915,12 +1899,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -4455,7 +4439,7 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4817,51 +4801,55 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : uN, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_uN.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5726,7 +5714,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5735,7 +5723,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5768,6 +5756,8 @@ def $default_(valtype : valtype) : val? -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -6040,7 +6030,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_uN.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 @@ -7425,11 +7415,12 @@ def $inv_signed_(N : N, int : int) : nat -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx? +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() + def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) + def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_ @@ -8048,8 +8039,8 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8058,8 +8049,8 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* @@ -8069,9 +8060,9 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8081,9 +8072,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8092,9 +8083,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* @@ -8103,9 +8094,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -8114,10 +8105,10 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -8126,10 +8117,10 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -8138,9 +8129,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8149,9 +8140,9 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -8161,9 +8152,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8173,8 +8164,8 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8183,8 +8174,8 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8194,7 +8185,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8205,9 +8196,9 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8217,9 +8208,9 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* @@ -8394,27 +8385,27 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lan ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8426,8 +8417,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -8437,8 +8428,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -8448,8 +8439,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8493,11 +8484,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* @@ -8516,9 +8507,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ @@ -8554,11 +8545,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* @@ -8601,9 +8592,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9001,20 +8992,22 @@ def $Ki : nat def $Ki = 1024 ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval +def $packfield_(storagetype : storagetype, val : val) : fieldval? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) + def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val + def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9281,7 +9274,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} @@ -9294,7 +9287,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} @@ -9319,9 +9312,9 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- wf_store: `%`(s) @@ -9330,14 +9323,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.I31_NUM_ref(i)) -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9345,7 +9338,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9353,7 +9346,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9361,7 +9354,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- wf_store: `%`(s) @@ -9370,14 +9363,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- wf_store: `%`(s) @@ -9386,7 +9379,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- wf_store: `%`(s) @@ -9425,44 +9418,44 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- wf_store: `%`(s) @@ -9477,31 +9470,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_br_on_null-addr`: `%`(instr*) @@ -10589,7 +10582,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -10660,7 +10653,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -10685,7 +10678,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11298,7 +11291,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0])) : val <: instr)]) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -11335,7 +11328,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: @@ -11345,7 +11338,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: @@ -11362,7 +11355,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0])) : val <: instr)]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -11461,7 +11454,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: @@ -11480,7 +11473,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11544,7 +11537,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11555,20 +11548,20 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -11624,7 +11617,7 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) @@ -11757,10 +11750,10 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: @@ -11770,9 +11763,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val)), [])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -11782,9 +11775,9 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: @@ -11801,9 +11794,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11847,8 +11840,8 @@ def $alloctypes(type*) : deftype* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) -- if (x!`%`_uN.0 = |deftype'*{deftype' <- `deftype'*`}|) } @@ -11872,8 +11865,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11895,8 +11888,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11918,8 +11911,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11941,8 +11934,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11964,8 +11957,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11987,8 +11980,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12010,8 +12003,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12059,27 +12052,27 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -12124,9 +12117,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12153,21 +12146,21 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config @@ -12178,4162 +12171,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if (x33!`%`_sN.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_sN.0 : int <:> nat))) - -- if (i!`%`_sN.0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_uN.0):Bbyte => `%`_laneidx(l!`%`_uN.0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_uN.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_uN.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_uN.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[x!`%`_uN.0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_uN.0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_uN.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_uN.0] = ?()]) - -- if (?(id) = I.LABELS_I[x!`%`_uN.0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{rectype : rectype}: - `%`(TYPE_decl(rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{tagtype : tagtype}: - `%`(TAG_decl(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_decl(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{memtype : memtype}: - `%`(MEMORY_decl(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{tabletype : tabletype, expr : expr}: - `%`(TABLE_decl(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{`byte*` : byte*, datamode : datamode}: - `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{funcidx : funcidx}: - `%`(START_decl(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{name : name, externidx : externidx}: - `%`(EXPORT_decl(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{n : n, `instr*` : instr*}: - `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{n : n, frame : frame}: - `%`(`FRAME_%{%}`_callframe(n, frame)) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/07-else-simplification.il b/spectec/test-middlend/specification.exp/07-else-simplification.il new file mode 100644 index 0000000000..ec960c5fea --- /dev/null +++ b/spectec/test-middlend/specification.exp/07-else-simplification.il @@ -0,0 +1,11960 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +def $sum(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + def $sum([]) = 0 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + def $sum{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +def $prod(nat*) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + def $prod([]) = 1 + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + def $prod{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, `w*` : X*, n : nat, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`{i : int}(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM{m : m, exp : exp}(m : m, exp : exp) + | SUBNORM{m : m, exp : exp}(m : m) + | INF + | NAN{m : m}(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, m : m, exp : exp}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS{fNmag : fNmag}(fNmag : fNmag) + | NEG{fNmag : fNmag}(fNmag : fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, fNmag : fNmag}: + `%%`(N, POS_fN(fNmag)) + -- wf_fNmag: `%%`(N, fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, fNmag : fNmag}: + `%%`(N, NEG_fN(fNmag)) + -- wf_fNmag: `%%`(N, fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fzero(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fnat(N : N, nat : nat) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $fone(N : N) : fN + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $utf8(char*) : byte* + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*}: + `%`(`%`_name(char*{char <- `char*`})) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC{funcidx : funcidx}(funcidx : funcidx) + | GLOBAL{globalidx : globalidx}(globalidx : globalidx) + | TABLE{tableidx : tableidx}(tableidx : tableidx) + | MEM{memidx : memidx}(memidx : memidx) + | TAG{tagidx : tagidx}(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +def $funcsxx(externidx*) : typeidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + def $funcsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +def $globalsxx(externidx*) : globalidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + def $globalsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +def $tablesxx(externidx*) : tableidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + def $tablesxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +def $memsxx(externidx*) : memidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + def $memsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +def $tagsxx(externidx*) : tagidx* + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + def $tagsxx([]) = [] + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES{`typeidx*` : typeidx*} typeidx*, + FUNCS{`funcidx*` : funcidx*} funcidx*, + GLOBALS{`globalidx*` : globalidx*} globalidx*, + TABLES{`tableidx*` : tableidx*} tableidx*, + MEMS{`memidx*` : memidx*} memidx*, + ELEMS{`elemidx*` : elemidx*} elemidx*, + DATAS{`dataidx*` : dataidx*} dataidx*, + LOCALS{`localidx*` : localidx*} localidx*, + LABELS{`labelidx*` : labelidx*} labelidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_opt(free?) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.1-172.29 +def $free_list(free*) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:177.1-177.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.57 + def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_typeidx(typeidx : typeidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_funcidx(funcidx : funcidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_globalidx(globalidx : globalidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tableidx(tableidx : tableidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_memidx(memidx : memidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_elemidx(elemidx : elemidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_dataidx(dataidx : dataidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_localidx(localidx : localidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_labelidx(labelidx : labelidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_externidx(externidx : externidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | REC{n : n}(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | BOT + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) + | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) + | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC{list : list(syntax subtype)}(list : list(syntax subtype)) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{n : n}: + `%`(REC_heaptype(n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{list : list(syntax fieldtype)}: + `%`(STRUCT_comptype(list)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, var_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ANYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EQREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $I31REF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $STRUCTREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $ARRAYREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $EXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLFUNCREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $NULLEXTERNREF : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`{u64 : u64}(u64 : u64, u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, var_0 : u64?}: + `%`(`[%..%]`_limits(u64, var_0)) + -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, var_0))?{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG{tagtype : tagtype}(tagtype : tagtype) + | GLOBAL{globaltype : globaltype}(globaltype : globaltype) + | MEM{memtype : memtype}(memtype : memtype) + | TABLE{tabletype : tabletype}(tabletype : tabletype) + | FUNC{typeuse : typeuse}(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, var_0 : externtype*}: + `%`(`%->%`_moduletype(externtype*{externtype <- `externtype*`}, var_0)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = ?($size(numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = ?($vsize(vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = ?($psize(packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size((Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) + def $inv_jsize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) + def $inv_jsizenn{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $unpack(storagetype : storagetype) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype + -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = ?(numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = ?(vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = ?(consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ?(($lunpack(lanetype) : numtype <: consttype)) + def $cunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $diffrt(reftype : reftype, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = ?(dt) + def $as_deftype{x0 : typeuse}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 +def $tagsxt(externtype*) : tagtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 + def $tagsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 + def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 +def $globalsxt(externtype*) : globaltype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 + def $globalsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 + def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 +def $memsxt(externtype*) : memtype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 + def $memsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 + def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 +def $tablesxt(externtype*) : tabletype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 + def $tablesxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 + def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 +def $funcsxt(externtype*) : deftype* + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 + def $funcsxt([]) = [] + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 + def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 +def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 + def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 +def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 + def $minus_recs([], []) = ([], []) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 + def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 + def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 +def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 + def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 + def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 +def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 + def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 + def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 + def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 + def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 + def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 + def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 + def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 + def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 + def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 +def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 + def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 +def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 + def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 +def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 +def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 + def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) + -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_all_valtype(valtype : valtype, typeuse*) : valtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 +def $free_subtype(subtype : subtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 + def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 +def $free_rectype(rectype : rectype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 +def $free_deftype(deftype : deftype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 + def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tagtype(tagtype : tagtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_globaltype(globaltype : globaltype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_memtype(memtype : memtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_tabletype(tabletype : tabletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_datatype(datatype : datatype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_elemtype(elemtype : elemtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_externtype(externtype : externtype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $free_moduletype(moduletype : moduletype) : free + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0{Inn : Inn, var_x : iN}(Inn : Inn, var_x : iN) + | mk_num__1{Fnn : Fnn, var_x : fN}(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size((Inn : addrtype <: numtype)), var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), var_x) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) + | mk_lane__1{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) + | mk_lane__2{Jnn : Jnn, var_x : iN}(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = (numtype : numtype <: lanetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = (packtype : packtype <: lanetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), var_x) + -- if (lanetype = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) + | mk_lit__1{vectype : vectype, var_x : vec_}(vectype : vectype, var_x : vec_) + | mk_lit__2{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = (numtype : numtype <: storagetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = (vectype : vectype <: storagetype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = (packtype : packtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0{Inn : Inn, var_x : unop_Inn}(Inn : Inn, var_x : unop_Inn) + | mk_unop__1{Fnn : Fnn, var_x : unop_Fnn}(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV{sx : sx}(sx : sx) + | REM{sx : sx}(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR{sx : sx}(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0{Inn : Inn, var_x : binop_Inn}(Inn : Inn, var_x : binop_Inn) + | mk_binop__1{Fnn : Fnn, var_x : binop_Fnn}(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0{Inn : Inn, var_x : testop_Inn}(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0{Inn : Inn, var_x : relop_Inn}(Inn : Inn, var_x : relop_Inn) + | mk_relop__1{Fnn : Fnn, var_x : relop_Fnn}(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = (Inn : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = (Fnn : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND{sx : sx}(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) < $sizenn2((Inn_2 : addrtype <: numtype))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) > $sizenn2((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT{sx : sx}(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1((Inn_1 : addrtype <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC{sx : sx}(sx : sx) + | TRUNC_SAT{sx : sx}(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) + -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) + -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) + -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) + -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $dim(shape : shape) : dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`{shape : shape, Jnn : Jnn}(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{shape : shape, Jnn : Jnn}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`{shape : shape}(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT{sx : sx}(sx : sx) + | SUB_SAT{sx : sx}(sx : sx) + | MUL + | `AVGRU` + | `Q15MULR_SATS` + | `RELAXED_Q15MULRS` + | MIN{sx : sx}(sx : sx) + | MAX{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `AVGRU`_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0{M : M, var_x : vswizzlop_M}(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL{half : half, sx : sx}(half : half, sx : sx) + | `DOTS` + | `RELAXED_DOTS` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | `RELAXED_DOT_ADDS` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND{half : half, sx : sx}(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)) + -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) + -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE{zero : zero}(zero : zero) + | `PROMOTELOW` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN{u32 : u32} u32, + OFFSET{u64 : u64} u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0{Inn : Inn, var_x : loadop_Inn}(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0{Inn : Inn, var_x : storeop_Inn}(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = (Inn : addrtype <: numtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) + | SPLAT{sz : sz}(sz : sz) + | ZERO{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if (sz!`%`_sz.0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) + | _IDX{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 +syntax addrref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 +relation wf_addrref: `%`(addrref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_0{u31 : u31}: + `%`(REF.I31_NUM_addrref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_1{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_addrref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_2{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_addrref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_3{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_addrref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_4{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_addrref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_5{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_addrref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_6{addrref : addrref}: + `%`(REF.EXTERN_addrref(addrref)) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) + | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) + | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) + | MEM{memaddr : memaddr}(memaddr : memaddr) + | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) + | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME{name : name} name, + ADDR{externaddr : externaddr} externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES{`deftype*` : deftype*} deftype*, + TAGS{`tagaddr*` : tagaddr*} tagaddr*, + GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, + MEMS{`memaddr*` : memaddr*} memaddr*, + TABLES{`tableaddr*` : tableaddr*} tableaddr*, + FUNCS{`funcaddr*` : funcaddr*} funcaddr*, + DATAS{`dataaddr*` : dataaddr*} dataaddr*, + ELEMS{`elemaddr*` : elemaddr*} elemaddr*, + EXPORTS{`exportinst*` : exportinst*} exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_val(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, vec_ : vec_}: + `%`(VCONST_val(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{heaptype : heaptype}: + `%`(REF.NULL_val(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3{u31 : u31}: + `%`(REF.I31_NUM_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{addrref : addrref}: + `%`(REF.EXTERN_val(addrref)) + -- wf_addrref: `%`(addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS{`val?*` : val?*} val?*, + MODULE{moduleinst : moduleinst} moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) + | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) + | BR{labelidx : labelidx}(labelidx : labelidx) + | BR_IF{labelidx : labelidx}(labelidx : labelidx) + | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) + | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | CALL{funcidx : funcidx}(funcidx : funcidx) + | CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) + | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | THROW{tagidx : tagidx}(tagidx : tagidx) + | THROW_REF + | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) + | LOCAL.GET{localidx : localidx}(localidx : localidx) + | LOCAL.SET{localidx : localidx}(localidx : localidx) + | LOCAL.TEE{localidx : localidx}(localidx : localidx) + | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) + | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) + | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) + | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) + | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) + | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) + | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) + | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) + | LOAD{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_?, memidx : memidx, memarg : memarg) + | STORE{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_?, memidx : memidx, memarg : memarg) + | VLOAD{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | MEMORY.SIZE{memidx : memidx}(memidx : memidx) + | MEMORY.GROW{memidx : memidx}(memidx : memidx) + | MEMORY.FILL{memidx : memidx}(memidx : memidx) + | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) + | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) + | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.IS_NULL + | REF.AS_NON_NULL + | REF.EQ + | REF.TEST{reftype : reftype}(reftype : reftype) + | REF.CAST{reftype : reftype}(reftype : reftype) + | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) + | REF.I31 + | I31.GET{sx : sx}(sx : sx) + | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) + | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) + | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.LEN + | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) + | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | EXTERN.CONVERT_ANY + | ANY.CONVERT_EXTERN + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | UNOP{numtype : numtype, unop_ : unop_}(numtype : numtype, unop_ : unop_) + | BINOP{numtype : numtype, binop_ : binop_}(numtype : numtype, binop_ : binop_) + | TESTOP{numtype : numtype, testop_ : testop_}(numtype : numtype, testop_ : testop_) + | RELOP{numtype : numtype, relop_ : relop_}(numtype : numtype, relop_ : relop_) + | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) + | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) + | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) + | VUNOP{shape : shape, vunop_ : vunop_}(shape : shape, vunop_ : vunop_) + | VBINOP{shape : shape, vbinop_ : vbinop_}(shape : shape, vbinop_ : vbinop_) + | VTERNOP{shape : shape, vternop_ : vternop_}(shape : shape, vternop_ : vternop_) + | VTESTOP{shape : shape, vtestop_ : vtestop_}(shape : shape, vtestop_ : vtestop_) + | VRELOP{shape : shape, vrelop_ : vrelop_}(shape : shape, vrelop_ : vrelop_) + | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_}(ishape : ishape, vshiftop_ : vshiftop_) + | VBITMASK{ishape : ishape}(ishape : ishape) + | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_}(bshape : bshape, vswizzlop_ : vswizzlop_) + | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) + | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__) + | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__) + | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__) + | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) + | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) + | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | TRAP +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, var_0 : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, instr*{instr <- `instr*`}, var_0)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_9{`labelidx*` : labelidx*, var_0 : labelidx}: + `%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, var_0)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, var_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, var_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, var_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, var_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_23{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, list, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_24{localidx : localidx}: + `%`(LOCAL.GET_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_25{localidx : localidx}: + `%`(LOCAL.SET_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_26{localidx : localidx}: + `%`(LOCAL.TEE_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_27{globalidx : globalidx}: + `%`(GLOBAL.GET_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_28{globalidx : globalidx}: + `%`(GLOBAL.SET_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_29{tableidx : tableidx}: + `%`(TABLE.GET_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_30{tableidx : tableidx}: + `%`(TABLE.SET_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_31{tableidx : tableidx}: + `%`(TABLE.SIZE_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_32{tableidx : tableidx}: + `%`(TABLE.GROW_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_33{tableidx : tableidx}: + `%`(TABLE.FILL_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_34{tableidx : tableidx, var_0 : tableidx}: + `%`(TABLE.COPY_instr(tableidx, var_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(TABLE.INIT_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_36{elemidx : elemidx}: + `%`(ELEM.DROP_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_37{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, loadop_?{loadop_ <- `loadop_?`}, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, loadop_))?{loadop_ <- `loadop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_38{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, storeop_?{storeop_ <- `storeop_?`}, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, storeop_))?{storeop_ <- `storeop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_39{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, vloadop_?{vloadop_ <- `vloadop_?`}, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, vloadop_))?{vloadop_ <- `vloadop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_43{memidx : memidx}: + `%`(MEMORY.SIZE_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_44{memidx : memidx}: + `%`(MEMORY.GROW_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_45{memidx : memidx}: + `%`(MEMORY.FILL_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_46{memidx : memidx, var_0 : memidx}: + `%`(MEMORY.COPY_instr(memidx, var_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(MEMORY.INIT_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_48{dataidx : dataidx}: + `%`(DATA.DROP_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_49{heaptype : heaptype}: + `%`(REF.NULL_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_50: + `%`(REF.IS_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_51: + `%`(REF.AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_52: + `%`(REF.EQ_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_53{reftype : reftype}: + `%`(REF.TEST_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_54{reftype : reftype}: + `%`(REF.CAST_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_55{funcidx : funcidx}: + `%`(REF.FUNC_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_56: + `%`(REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_57{sx : sx}: + `%`(I31.GET_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_58{typeidx : typeidx}: + `%`(STRUCT.NEW_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_59{typeidx : typeidx}: + `%`(STRUCT.NEW_DEFAULT_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, u32 : u32}: + `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_61{typeidx : typeidx, u32 : u32}: + `%`(STRUCT.SET_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_62{typeidx : typeidx}: + `%`(ARRAY.NEW_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_63{typeidx : typeidx}: + `%`(ARRAY.NEW_DEFAULT_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(ARRAY.NEW_FIXED_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(ARRAY.NEW_DATA_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_68{typeidx : typeidx}: + `%`(ARRAY.SET_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_69: + `%`(ARRAY.LEN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_70{typeidx : typeidx}: + `%`(ARRAY.FILL_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_71{typeidx : typeidx, var_0 : typeidx}: + `%`(ARRAY.COPY_instr(typeidx, var_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(ARRAY.INIT_DATA_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_74: + `%`(EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_75: + `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_76{numtype : numtype, num_ : num_}: + `%`(CONST_instr(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_77{numtype : numtype, unop_ : unop_}: + `%`(UNOP_instr(numtype, unop_)) + -- wf_unop_: `%%`(numtype, unop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_78{numtype : numtype, binop_ : binop_}: + `%`(BINOP_instr(numtype, binop_)) + -- wf_binop_: `%%`(numtype, binop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_79{numtype : numtype, testop_ : testop_}: + `%`(TESTOP_instr(numtype, testop_)) + -- wf_testop_: `%%`(numtype, testop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_80{numtype : numtype, relop_ : relop_}: + `%`(RELOP_instr(numtype, relop_)) + -- wf_relop_: `%%`(numtype, relop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, cvtop__)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, cvtop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_82{vectype : vectype, vec_ : vec_}: + `%`(VCONST_instr(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_87{shape : shape, vunop_ : vunop_}: + `%`(VUNOP_instr(shape, vunop_)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, vunop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_88{shape : shape, vbinop_ : vbinop_}: + `%`(VBINOP_instr(shape, vbinop_)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, vbinop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_89{shape : shape, vternop_ : vternop_}: + `%`(VTERNOP_instr(shape, vternop_)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, vternop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_90{shape : shape, vtestop_ : vtestop_}: + `%`(VTESTOP_instr(shape, vtestop_)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, vtestop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_91{shape : shape, vrelop_ : vrelop_}: + `%`(VRELOP_instr(shape, vrelop_)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, vrelop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_92{ishape : ishape, vshiftop_ : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, vshiftop_)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, vshiftop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_94{bshape : bshape, vswizzlop_ : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, vswizzlop_)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, vswizzlop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + `%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, vextunop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, vextbinop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, vextternop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, vcvtop__)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, vcvtop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_104{u31 : u31}: + `%`(REF.I31_NUM_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_105{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_106{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_107{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_108{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_109{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_110{addrref : addrref}: + `%`(REF.EXTERN_instr(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_111{n : n, `instr*` : instr*, var_0 : instr*}: + `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, var_0)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_112{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, instr*{instr <- `instr*`})) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_113{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_114: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $memarg0 : memarg + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $const(consttype : consttype, lit_ : lit_) : instr + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) + -- wf_instr: `%`(CONST_instr(numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) + -- wf_instr: `%`(VCONST_instr(vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_shape(shape : shape) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_blocktype(blocktype : blocktype) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 +def $shift_labelidxs(labelidx*) : labelidx* + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 + def $shift_labelidxs([]) = [] + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 + def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + -- wf_uN: `%%`(32, `%`_uN((((labelidx!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 +def $free_instr(instr : instr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 + def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 + def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 + def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 + def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 + def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 + def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 + def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 + def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 + def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 + def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 + def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 + def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 + def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 + def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 + def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 + def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 + def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 + def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 + def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 + def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 + def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 + def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 + def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 + def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 + def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 + def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 + def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 + def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 + def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 + def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 + def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 + def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 + def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 + def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 + def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 + def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 + def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 + def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 + def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 + def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 + def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 + def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 + def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 + def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 + def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 + def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 + def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 + def $free_instr{typeidx : uN, u32 : uN}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 + def $free_instr{typeidx : uN}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 + def $free_instr{typeidx : uN}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 + def $free_instr{typeidx : uN, u32 : uN}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 + def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 + def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 + def $free_instr{`sx?` : sx?, typeidx : uN}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 + def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 + def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 + def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 + def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 + def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 + def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 + def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 + def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 + def $free_instr{localidx : uN}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 + def $free_instr{localidx : uN}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 + def $free_instr{globalidx : uN}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 + def $free_instr{globalidx : uN}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 + def $free_instr{tableidx : uN}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 + def $free_instr{tableidx : uN}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + def $free_instr{tableidx : uN}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 + def $free_instr{tableidx : uN}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 + def $free_instr{tableidx : uN}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 + def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 + def $free_instr{tableidx : uN, elemidx : uN}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 + def $free_instr{elemidx : uN}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 + def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 + def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 + def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 + def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 + def $free_instr{memidx : uN}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 + def $free_instr{memidx : uN}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 + def $free_instr{memidx : uN}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 + def $free_instr{memidx_1 : uN, memidx_2 : uN}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + def $free_instr{memidx : uN, dataidx : uN}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 + def $free_instr{dataidx : uN}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 +def $free_block(instr*) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 + def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + -- wf_free: `%`(free) + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_expr(expr : expr) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE{rectype : rectype}(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG{tagtype : tagtype}(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY{memtype : memtype}(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(byte*{byte <- `byte*`}, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL{valtype : valtype}(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START{funcidx : funcidx}(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, externtype : externtype, var_0 : name}: + `%`(IMPORT_import(name, var_0, externtype)) + -- wf_name: `%`(name) + -- wf_externtype: `%`(externtype) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_import: `%`(import))*{import <- `import*`} + -- (wf_tag: `%`(tag))*{tag <- `tag*`} + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_func: `%`(func))*{func <- `func*`} + -- (wf_data: `%`(data))*{data <- `data*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_type(type : type) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_tag(tag : tag) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_global(global : global) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_mem(mem : mem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_table(table : table) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_local(local : local) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_func(func : func) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_datamode(datamode : datamode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_data(data : data) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elemmode(elemmode : elemmode) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_elem(elem : elem) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_start(start : start) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_import(import : import) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_export(export : export) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $free_module(module : module) : free + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $funcidx_module(module : module) : funcidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +def $dataidx_funcs(func*) : dataidx* + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, var_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, localidx*{localidx <- `localidx*`}, var_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES{`deftype*` : deftype*} deftype*, + RECS{`subtype*` : subtype*} subtype*, + TAGS{`tagtype*` : tagtype*} tagtype*, + GLOBALS{`globaltype*` : globaltype*} globaltype*, + MEMS{`memtype*` : memtype*} memtype*, + TABLES{`tabletype*` : tabletype*} tabletype*, + FUNCS{`deftype*` : deftype*} deftype*, + DATAS{`datatype*` : datatype*} datatype*, + ELEMS{`elemtype*` : elemtype*} elemtype*, + LOCALS{`localtype*` : localtype*} localtype*, + LABELS{`resulttype*` : resulttype*} resulttype*, + RETURN{`resulttype?` : resulttype?} resulttype?, + REFS{`funcidx*` : funcidx*} funcidx* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : subtype*, var_2 : tagtype*, var_3 : globaltype*, var_4 : memtype*, var_5 : tabletype*, var_6 : deftype*, var_7 : datatype*, var_8 : elemtype*, var_9 : localtype*, var_10 : resulttype*, var_11 : resulttype?, var_12 : funcidx*}: + `%`({TYPES var_0, RECS var_1, TAGS var_2, GLOBALS var_3, MEMS var_4, TABLES var_5, FUNCS var_6, DATAS var_7, ELEMS var_8, LOCALS var_9, LABELS var_10, RETURN var_11, REFS var_12}) + -- (wf_subtype: `%`(var_1))*{var_1 <- var_1} + -- (wf_typeuse: `%`(var_2))*{var_2 <- var_2} + -- (wf_globaltype: `%`(var_3))*{var_3 <- var_3} + -- (wf_memtype: `%`(var_4))*{var_4 <- var_4} + -- (wf_tabletype: `%`(var_5))*{var_5 <- var_5} + -- (wf_reftype: `%`(var_8))*{var_8 <- var_8} + -- (wf_localtype: `%`(var_9))*{var_9 <- var_9} + -- (wf_uN: `%%`(32, var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 +def $with_locals(context : context, localidx*, localtype*) : context + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 + def $with_locals{C : context}(C, [], []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : uN, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 + def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_uN.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 +def $clos_deftypes(deftype*) : deftype* + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 + def $clos_deftypes([]) = [] + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 + def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_valtype(context : context, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_deftype(context : context, deftype : deftype) : deftype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_tagtype(context : context, tagtype : tagtype) : tagtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_externtype(context : context, externtype : externtype) : externtype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +def $clos_moduletype(context : context, moduletype : moduletype) : moduletype + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidxnat = + | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidxnat: `%`(oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidxnat_case_0{typeidx : typeidx, nat : nat}: + `%`(OK_oktypeidxnat(typeidx, nat)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype}: + `%~~%`(deftype, comptype) + -- wf_comptype: `%`(comptype) + -- if ($expanddt(deftype) = comptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{deftype : deftype, x : uN, i : nat}((deftype : deftype <: typeuse), x, i) = true + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeidx : uN, x : uN, i : nat}(_IDX_typeuse(typeidx), x, i) = (typeidx!`%`_uN.0 < x!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, x : uN, i : nat}(REC_typeuse(j), x, i) = (j < i) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $unrollht(context : context, heaptype : heaptype) : subtype + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_uN.0]) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, (numtype : numtype <: valtype)) + -- wf_context: `%`(C) + -- Numtype_ok: `%|-%:OK`(C, numtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, (vectype : vectype <: valtype)) + -- wf_context: `%`(C) + -- Vectype_ok: `%|-%:OK`(C, vectype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, (reftype : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + -- Reftype_ok: `%|-%:OK`(C, reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + -- if (C.TYPES_context[typeidx!`%`_uN.0] = dt) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, (deftype : deftype <: typeuse)) + -- wf_context: `%`(C) + -- Deftype_ok: `%|-%:OK`(C, deftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, (valtype : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- Valtype_ok: `%|-%:OK`(C, valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, (packtype : packtype <: storagetype)) + -- wf_context: `%`(C) + -- Packtype_ok: `%|-%:OK`(C, packtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} + -- if (|x*{x <- `x*`}| <= 1) + -- (if (x!`%`_uN.0 < x_0!`%`_uN.0))*{x <- `x*`} + -- (if ($unrolldt(C.TYPES_context[x!`%`_uN.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_uN.0 + 1)))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 + rule _rec2{C : context, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) + -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 + rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} + -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:91.1-91.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 + rule empty{C : context, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_uN.0 + 1)), (i + 1))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 + rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:95.1-95.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) + -- wf_context: `%`(C) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype), heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_uN.0] : deftype <: heaptype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 + rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) + -- wf_context: `%`(C) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) + -- wf_context: `%`(C) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) + -- wf_context: `%`(C) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[x!`%`_uN.0] = lct))*{lct <- `lct*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`((deftype : deftype <: typeuse), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- Expand: `%~~%`(deftype, comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], comptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) + -- wf_context: `%`(C) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) + -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_uN.0]) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +def $default_(valtype : valtype) : val? + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + -- wf_val: `%`(REF.NULL_val(ht)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%DEFAULTABLE`(t) + -- wf_valtype: `%`(t) + -- if ($default_(t) =/= ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +def $is_packtype(storagetype : storagetype) : bool + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_uN.0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_uN.0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if (C.LABELS_context[l!`%`_uN.0]!`%`_list.0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- if (C.LABELS_context[l!`%`_uN.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[x!`%`_uN.0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule ref.null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule ref.func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + -- if (C.FUNCS_context[x!`%`_uN.0] = dt) + -- if (x <- C.REFS_context) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule ref.i31{C : context}: + `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule ref.is_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule ref.as_non_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule ref.eq{C : context}: + `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule ref.test{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule ref.cast{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule i31.get{C : context, sx : sx}: + `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 + rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: + `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i!`%`_uN.0] = `%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_uN.0], rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 + rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule array.set{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule array.len{C : context}: + `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule array.fill{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_uN.0] : reftype <: storagetype), zt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) + -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule local.get{C : context, x : idx, t : valtype}: + `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule local.set{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule local.tee{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- if (C.LOCALS_context[x!`%`_uN.0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule global.set{C : context, x : idx, t : valtype}: + `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + -- if (C.TABLES_context[x_1!`%`_uN.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[x_2!`%`_uN.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.ELEMS_context[y!`%`_uN.0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule elem.drop{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[x!`%`_uN.0] = rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + -- if (C.MEMS_context[x_1!`%`_uN.0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if (C.MEMS_context[x_2!`%`_uN.0] = `%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- if (C.DATAS_context[y!`%`_uN.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule data.drop{C : context, x : idx}: + `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[x!`%`_uN.0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if ((i!`%`_uN.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if (i!`%`_uN.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + -- if (i!`%`_uN.0 < $dim(sh)!`%`_dim.0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[x_1!`%`_uN.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype}: + `|-%NONDEFAULTABLE`(t) + -- wf_valtype: `%`(t) + -- if ($default_(t) = ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.null{C : context, ht : heaptype}: + `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.i31{C : context}: + `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.func{C : context, x : idx}: + `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new_default{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_default{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_fixed{C : context, x : idx, n : n}: + `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule any.convert_extern{C : context}: + `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule extern.convert_any{C : context}: + `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule global.get{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + -- if (C.GLOBALS_context[x!`%`_uN.0] = `%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- if (x!`%`_uN.0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_uN.0]) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[x!`%`_uN.0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + -- if (C.TABLES_context[x!`%`_uN.0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_uN.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + -- if (C.TAGS_context[x!`%`_uN.0] = jt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[x!`%`_uN.0] = gt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + -- if (C.MEMS_context[x!`%`_uN.0] = mt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + -- if (C.TABLES_context[x!`%`_uN.0] = tt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) + -- if (C.FUNCS_context[x!`%`_uN.0] = dt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}: + `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: + `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) + -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) + -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][i!`%`_relaxed2.0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $signed_(N : N, nat : nat) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_signed_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zero(lanetype : lanetype) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) + -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) + -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - (i_1!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, i_1!`%`_uN.0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN((i!`%`_uN.0 \ (2 ^ M))) + -- wf_uN: `%%`(N, `%`_uN((i!`%`_uN.0 \ (2 ^ M)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, (i!`%`_uN.0 \ (2 ^ M)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 + i_2!`%`_uN.0) \ (2 ^ N)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + i_1!`%`_uN.0) : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN(((i_1!`%`_uN.0 * i_2!`%`_uN.0) \ (2 ^ N)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN(($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() + -- if ((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_uN.0) : int <:> rat) / ($signed_(N, i_2!`%`_uN.0) : int <:> rat)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + -- wf_uN: `%%`(N, `%`_uN((((i_1!`%`_uN.0 : nat <:> int) - ((i_2!`%`_uN.0 * ($truncz(((i_1!`%`_uN.0 : nat <:> rat) / (i_2!`%`_uN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- if ((j_1 = $signed_(N, i_1!`%`_uN.0)) /\ (j_2 = $signed_(N, i_2!`%`_uN.0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_uN.0 <= i_2!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_uN.0 > i_2!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_uN.0 >= i_2!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_uN.0 < i_2!`%`_uN.0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)) then i_1 else i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 + i_2!`%`_uN.0) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) + $signed_(N, i_2!`%`_uN.0)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, ((i_1!`%`_uN.0 : nat <:> int) - (i_2!`%`_uN.0 : nat <:> int))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0))))) + -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_uN.0) - $signed_(N, i_2!`%`_uN.0)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieqz_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 = 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 = 0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inez_(N : N, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool((i_1!`%`_uN.0 =/= 0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 =/= 0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 < i_2!`%`_uN.0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) < $signed_(N, i_2!`%`_uN.0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 > i_2!`%`_uN.0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) > $signed_(N, i_2!`%`_uN.0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 <= i_2!`%`_uN.0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) <= $signed_(N, i_2!`%`_uN.0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1!`%`_uN.0 >= i_2!`%`_uN.0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, i_1!`%`_uN.0) >= $signed_(N, i_2!`%`_uN.0))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) + -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) + -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) + -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) + -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32(i_2!`%`_uN.0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32(i_2!`%`_uN.0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] + -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_testop__0_testop_(Inn, EQZ_testop_Inn), mk_num__0_num_(Inn, i)) = $ieqz_($sizenn((Inn : addrtype <: numtype)), i) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, EQ_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ieq_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, NE_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ine_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ilt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $igt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ile_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ige_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, EQ_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, NE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] + -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] + -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] + -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) + -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] + -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) + -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if (i!`%`_uN.0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[i!`%`_uN.0] else (if ($signed_(N, i!`%`_uN.0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[(i!`%`_uN.0 \ |c*{c <- `c*`}|)]))) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(c!`%`_uN.0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))!`%`_uN.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + -- if ($isize(Inn) = $fsize(Fnn)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))!`%`_uN.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_uN.0]*{i <- `i*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) + -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) + -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) {v} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_uN.0*{i <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_uN.0 : k!`%`_uN.0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_uN.0 : k!`%`_uN.0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} + -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_num(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, vec_ : vec_}: + `%`(VCONST_vec(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax ref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_0{u31 : u31}: + `%`(REF.I31_NUM_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_1{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_2{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_3{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_4{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_5{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_6{addrref : addrref}: + `%`(REF.EXTERN_ref(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_7{heaptype : heaptype}: + `%`(REF.NULL_ref(heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) + | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(val*{val <- `val*`})) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE{tagtype : tagtype} tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE{globaltype : globaltype} globaltype, + VALUE{val : val} val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE{memtype : memtype} memtype, + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE{tabletype : tabletype} tabletype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE{deftype : deftype} deftype, + MODULE{moduleinst : moduleinst} moduleinst, + CODE{funccode : funccode} funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE{elemtype : elemtype} elemtype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, iN : iN}: + `%`(PACK_packval(packtype, iN)) + -- wf_uN: `%%`($psize(packtype), iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_fieldval(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, vec_ : vec_}: + `%`(VCONST_fieldval(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{heaptype : heaptype}: + `%`(REF.NULL_fieldval(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3{u31 : u31}: + `%`(REF.I31_NUM_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{addrref : addrref}: + `%`(REF.EXTERN_fieldval(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, iN : iN}: + `%`(PACK_fieldval(packtype, iN)) + -- wf_uN: `%%`($psize(packtype), iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG{tagaddr : tagaddr} tagaddr, + FIELDS{`val*` : val*} val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS{`taginst*` : taginst*} taginst*, + GLOBALS{`globalinst*` : globalinst*} globalinst*, + MEMS{`meminst*` : meminst*} meminst*, + TABLES{`tableinst*` : tableinst*} tableinst*, + FUNCS{`funcinst*` : funcinst*} funcinst*, + DATAS{`datainst*` : datainst*} datainst*, + ELEMS{`eleminst*` : eleminst*} eleminst*, + STRUCTS{`structinst*` : structinst*} structinst*, + ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, + EXNS{`exninst*` : exninst*} exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`{store : store, frame : frame}(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, instr*{instr <- `instr*`})) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $packfield_(storagetype : storagetype, val : val) : fieldval? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) + -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 +def $tagsxa(externaddr*) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 + def $tagsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 + def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 +def $globalsxa(externaddr*) : globaladdr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 + def $globalsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 + def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 +def $memsxa(externaddr*) : memaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 + def $memsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 + def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 +def $tablesxa(externaddr*) : tableaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 + def $tablesxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 + def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 +def $funcsxa(externaddr*) : funcaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 + def $funcsxa([]) = [] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 + def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[x!`%`_uN.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_uN.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_local(state : state, localidx : localidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)]) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[x!`%`_uN.0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_global(state : state, globalidx : globalidx, val : val) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_uN.0]].VALUE_globalinst = v], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]].REFS_tableinst[i] = r], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_uN.0]] = ti], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_uN.0]] = mi], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_elem(state : state, elemidx : elemidx, ref*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_uN.0]].REFS_eleminst = r*{r <- `r*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_data(state : state, dataidx : dataidx, byte*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_uN.0]].BYTES_datainst = b*{b <- `b*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_structinst(state : state, structinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_arrayinst(state : state, arrayinst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $add_exninst(state : state, exninst*) : state + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) + -- if (i'!`%`_uN.0 = (|r'*{r' <- `r'*`}| + n)) + -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} + def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $growmem(meminst : meminst, nat : nat) : meminst? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if ((i'!`%`_uN.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if (i'!`%`_uN.0 <= j!`%`_uN.0))?{j <- `j?`} + def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 + rule null{s : store, ht : heaptype, ht' : heaptype}: + `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 + rule i31{s : store, i : u31}: + `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 + rule host{s : store, a : addr}: + `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 + rule extern{s : store, addrref : addrref}: + `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + -- Num_ok: `%|-%:%`(s, num, nt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + -- Vec_ok: `%|-%:%`(s, vec, vt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- Ref_ok: `%|-%:%`(s, ref, rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) + -- if (s.FUNCS_store[a] = funcinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([(val : val <: instr) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + -- if (!($proj_num__0(c))!`%`_uN.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + -- if (!($proj_num__0(c))!`%`_uN.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if (l!`%`_uN.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx((((l!`%`_uN.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + -- if (l!`%`_uN.0 > 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- if (!($proj_num__0(c))!`%`_uN.0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- if (!($proj_num__0(c))!`%`_uN.0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[!($proj_num__0(i))!`%`_uN.0])) + -- if (!($proj_num__0(i))!`%`_uN.0 < |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.tee{val : val, x : idx}: + `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.i31{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: + `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- if (ref_1 = ref_2) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{ht : heaptype, sx : sx}: + `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{addrref : addrref}: + `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{addrref : addrref}: + `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if (c <- $unop_(nt, unop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + -- if ($unop_(nt, unop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if (c <- $binop_(nt, binop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + -- if ($binop_(nt, binop, c_1, c_2) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vunop_(sh, vunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + -- if ($vunop_(sh, vunop, c_1) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) + -- if (!($proj_num__0(c))!`%`_uN.0 = $prod($inez_($jsizenn(Jnn), !($proj_lane__2(i)))!`%`_uN.0*{i <- `i*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_uN.0])))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_uN.0] = $lpacknum_(Lnn, c_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +def $blocktype_(state : state, blocktype : blocktype) : instrtype + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) + -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_uN.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) + -- if ($local(z, x) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule global.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) + -- if ($global(z, x).VALUE_globalinst = val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[!($proj_num__0(i))!`%`_uN.0] : ref <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- if (n =/= 0) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$table(z, x_2).REFS_tableinst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if (n =/= 0) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) + -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if (!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) + -- if (n =/= 0) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- if (n =/= 0) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$table(z, x).REFS_tableinst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN(j!`%`_uN.0))^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_uN.0] = mk_lane__2_lane_(Jnn, `%`_uN(k!`%`_uN.0))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- if (n =/= 0) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$mem(z, x_2).BYTES_meminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- if (!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- if (!($proj_num__0(i_1))!`%`_uN.0 > !($proj_num__0(i_2))!`%`_uN.0) + -- if (n =/= 0) + -- if (((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) + -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) + -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((!($proj_num__0(j))!`%`_uN.0 + n) > |$data(z, y).BYTES_datainst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- if (n =/= 0) + -- if (((!($proj_num__0(i))!`%`_uN.0 + n) <= |$mem(z, x).BYTES_meminst|) /\ ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0]!`%`_byte.0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null-idx`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.func{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])]) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_uN.0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_uN.0])) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($default_($unpack(zt)) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[!($proj_num__0(i))!`%`_uN.0 : n]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((!($proj_num__0(i))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[!($proj_num__0(i))!`%`_uN.0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[!($proj_num__0(i))!`%`_uN.0])) : val <: instr)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- if (n =/= 0) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if ((!($proj_num__0(i_2))!`%`_uN.0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_1))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i_2))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ((!($proj_num__0(i_1))!`%`_uN.0 <= !($proj_num__0(i_2))!`%`_uN.0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_1))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(((((!($proj_num__0(i_2))!`%`_uN.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) + -- if (n =/= 0) + -- if ((!($proj_num__0(j))!`%`_uN.0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- if (ref = $elem(z, y).REFS_eleminst[!($proj_num__0(j))!`%`_uN.0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((!($proj_num__0(i))!`%`_uN.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((!($proj_num__0(j))!`%`_uN.0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(i))!`%`_uN.0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((!($proj_num__0(j))!`%`_uN.0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[!($proj_num__0(j))!`%`_uN.0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[x!`%`_uN.0], FIELDS val^n{val <- `val*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 + rule local.set{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 + rule global.set{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_table(z, x, !($proj_num__0(i))!`%`_uN.0, ref), [])) + -- if (!($proj_num__0(i))!`%`_uN.0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !($growtable($table(z, x), n, ref))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 + rule elem.drop{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if (((!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0) + N) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config($with_mem(z, x, (!($proj_num__0(i))!`%`_uN.0 + ao.OFFSET_memarg!`%`_uN.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_uN: `%%`(N, `%`_uN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0)) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_uN.0]))!`%`_uN.0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !($growmem($mem(z, x), n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 + rule data.drop{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 + rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 + rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, i!`%`_uN.0, !($packfield_(zt*{zt <- `zt*`}[i!`%`_uN.0], val))), [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 + rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 + rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if (!($proj_num__0(i))!`%`_uN.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, !($proj_num__0(i))!`%`_uN.0, !($packfield_(zt, val))), [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- wf_uN: `%%`(32, x) + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} + -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) + -- if (x!`%`_uN.0 = |deftype'*{deftype' <- `deftype'*`}|) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) + -- if (taginst = {TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + -- if (globalinst = {TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_uN.0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_uN.0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) + -- if (datainst = {BYTES byte*{byte <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) + -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_uN.0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_uN.0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_uN.0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_uN.0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])} + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_uN.0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} + -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_uN.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) + -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) + -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + -- wf_instr: `%`(ELEM.DROP_instr(x)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} + -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} + -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} + diff --git a/spectec/test-middlend/specification.exp/07-sideconditions.il b/spectec/test-middlend/specification.exp/07-sideconditions.il deleted file mode 100644 index 9ef6f48bab..0000000000 --- a/spectec/test-middlend/specification.exp/07-sideconditions.il +++ /dev/null @@ -1,16735 +0,0 @@ - -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec -syntax N = nat - -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec -syntax M = nat - -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec -syntax K = nat - -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec -syntax n = nat - -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec -syntax m = nat - -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec -def $min(nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec - def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) - -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 -def $sum(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 - def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 - def $sum{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) -} - -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 -def $prod(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 - def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 - def $prod{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) -} - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $opt_(syntax X, X*) : X? - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 -def $concat_(syntax X, X**) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 - def $concat_{syntax X}(syntax X, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 - def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) -} - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 -def $concatn_(syntax X, X**, nat : nat) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 - def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 - def $concatn_{syntax X, `w*` : X*, n : nat, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) -} - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $concatopt_(syntax X, X?*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $concatopt_{syntax X}(syntax X, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $inv_concat_(syntax X, X*) : X** - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $inv_concatn_(syntax X, nat : nat, X*) : X** - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 -def $disjoint_(syntax X, X*) : bool - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 - def $disjoint_{syntax X}(syntax X, []) = true - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 - def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) -} - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 -def $setminus1_(syntax X, X : X, X*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 - def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 - def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) -} - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 -def $setminus_(syntax X, X*, X*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 - def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 - def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) -} - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 -def $setproduct2_(syntax X, X : X, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 - def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 - def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) -} - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 -def $setproduct1_(syntax X, X*, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 - def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 - def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) -} - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -rec { - -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 -def $setproduct_(syntax X, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 - def $setproduct_{syntax X}(syntax X, []) = [[]] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 - def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) -} - -;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec -def $ND : bool - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax bit = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_bit: `%`(bit) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule bit_case_0{i : nat}: - `%`(`%`_bit(i)) - -- if ((i = 0) \/ (i = 1)) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax byte = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_byte_0(x : byte) : (nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_byte: `%`(byte) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule byte_case_0{i : nat}: - `%`(`%`_byte(i)) - -- if ((i >= 0) /\ (i <= 255)) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax uN = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_uN_0(x : uN) : (nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_uN: `%%`(N, uN) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule uN_case_0{N : N, i : nat}: - `%%`(N, `%`_uN(i)) - -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax sN = - | `%`{i : int}(i : int) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_sN_0(x : sN) : (int) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_sN: `%%`(N, sN) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule sN_case_0{N : N, i : int}: - `%%`(N, `%`_sN(i)) - -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax iN = uN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u8 = uN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u16 = uN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u31 = uN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u32 = uN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u64 = uN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax s33 = sN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax i32 = iN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax i64 = iN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax i128 = iN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $M(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = $signif(N) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $E(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = $expon(N) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax exp = int - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax fNmag = - | NORM{m : m, exp : exp}(m : m, exp : exp) - | SUBNORM{m : m, exp : exp}(m : m) - | INF - | NAN{m : m}(m : m) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_fNmag: `%%`(N, fNmag) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_0{N : N, m : m, exp : exp}: - `%%`(N, NORM_fNmag(m, exp)) - -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_1{N : N, m : m, exp : exp}: - `%%`(N, SUBNORM_fNmag(m)) - -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_2{N : N}: - `%%`(N, INF_fNmag) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fNmag_case_3{N : N, m : m}: - `%%`(N, NAN_fNmag(m)) - -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax fN = - | POS{fNmag : fNmag}(fNmag : fNmag) - | NEG{fNmag : fNmag}(fNmag : fNmag) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_fN: `%%`(N, fN) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fN_case_0{N : N, fNmag : fNmag}: - `%%`(N, POS_fN(fNmag)) - -- wf_fNmag: `%%`(N, fNmag) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule fN_case_1{N : N, fNmag : fNmag}: - `%%`(N, NEG_fN(fNmag)) - -- wf_fNmag: `%%`(N, fNmag) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax f32 = fN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax f64 = fN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fzero(N : N) : fN - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) - -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fnat(N : N, nat : nat) : fN - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fone(N : N) : fN - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) - -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $canon_(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax vN = uN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax v128 = vN - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax list{syntax X}(syntax X) = - | `%`{`X*` : X*}(X*{X <- `X*`} : X*) - -- if (|X*{X <- `X*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_list_0(syntax X, x : list(syntax X)) : (X*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax char = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_char_0(x : char) : (nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_char: `%`(char) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule char_case_0{i : nat}: - `%`(`%`_char(i)) - -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 -def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax name = - | `%`{`char*` : char*}(char*{char <- `char*`} : char*) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_name_0(x : name) : (char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_name: `%`(name) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule name_case_0{`char*` : char*}: - `%`(`%`_name(char*{char <- `char*`})) - -- (wf_char: `%`(char))*{char <- `char*`} - -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax idx = u32 - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax laneidx = u8 - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax typeidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax funcidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax globalidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax tableidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax memidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax tagidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax elemidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax dataidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax labelidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax localidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax fieldidx = idx - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax externidx = - | FUNC{funcidx : funcidx}(funcidx : funcidx) - | GLOBAL{globalidx : globalidx}(globalidx : globalidx) - | TABLE{tableidx : tableidx}(tableidx : tableidx) - | MEM{memidx : memidx}(memidx : memidx) - | TAG{tagidx : tagidx}(tagidx : tagidx) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_externidx: `%`(externidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule externidx_case_0{funcidx : funcidx}: - `%`(FUNC_externidx(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule externidx_case_1{globalidx : globalidx}: - `%`(GLOBAL_externidx(globalidx)) - -- wf_uN: `%%`(32, globalidx) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule externidx_case_2{tableidx : tableidx}: - `%`(TABLE_externidx(tableidx)) - -- wf_uN: `%%`(32, tableidx) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule externidx_case_3{memidx : memidx}: - `%`(MEM_externidx(memidx)) - -- wf_uN: `%%`(32, memidx) - - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule externidx_case_4{tagidx : tagidx}: - `%`(TAG_externidx(tagidx)) - -- wf_uN: `%%`(32, tagidx) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 -def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 - def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 - def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 - def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 -def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 - def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 - def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 - def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 -def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 - def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 - def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 - def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 -def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 - def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 - def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 - def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 -def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 - def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 - def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 - def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax free = -{ - TYPES{`typeidx*` : typeidx*} typeidx*, - FUNCS{`funcidx*` : funcidx*} funcidx*, - GLOBALS{`globalidx*` : globalidx*} globalidx*, - TABLES{`tableidx*` : tableidx*} tableidx*, - MEMS{`memidx*` : memidx*} memidx*, - ELEMS{`elemidx*` : elemidx*} elemidx*, - DATAS{`dataidx*` : dataidx*} dataidx*, - LOCALS{`localidx*` : localidx*} localidx*, - LABELS{`labelidx*` : labelidx*} labelidx* -} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -relation wf_free: `%`(free) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*}: - `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8}) - -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} - -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} - -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} - -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} - -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} - -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} - -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} - -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} - -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_opt(free?) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{free : free}(?(free)) = free - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.1-172.29 -def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:177.1-177.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.57 - def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) -} - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_typeidx(typeidx : typeidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_funcidx(funcidx : funcidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_globalidx(globalidx : globalidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tableidx(tableidx : tableidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_memidx(memidx : memidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_elemidx(elemidx : elemidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_dataidx(dataidx : dataidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_localidx(localidx : localidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_labelidx(labelidx : labelidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_externidx(externidx : externidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax null = - | NULL - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax addrtype = - | I32 - | I64 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax numtype = - | I32 - | I64 - | F32 - | F64 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax vectype = - | V128 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax consttype = - | I32 - | I64 - | F32 - | F64 - | V128 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax absheaptype = - | ANY - | EQ - | I31 - | STRUCT - | ARRAY - | NONE - | FUNC - | NOFUNC - | EXN - | NOEXN - | EXTERN - | NOEXTERN - | BOT - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax mut = - | MUT - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax final = - | FINAL - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 -syntax typeuse = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) - | REC{n : n}(n : n) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 -syntax heaptype = - | ANY - | EQ - | I31 - | STRUCT - | ARRAY - | NONE - | FUNC - | NOFUNC - | EXN - | NOEXN - | EXTERN - | NOEXTERN - | BOT - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 -syntax valtype = - | I32 - | I64 - | F32 - | F64 - | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) - | BOT - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 -syntax storagetype = - | BOT - | I32 - | I64 - | F32 - | F64 - | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) - | I8 - | I16 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 -syntax resulttype = list(syntax valtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 -syntax fieldtype = - | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 -syntax comptype = - | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) - | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) - | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 -syntax subtype = - | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 -syntax rectype = - | REC{list : list(syntax subtype)}(list : list(syntax subtype)) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 -relation wf_typeuse: `%`(typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 - rule typeuse_case_0{typeidx : typeidx}: - `%`(_IDX_typeuse(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 - rule typeuse_case_1{rectype : rectype, n : n}: - `%`(_DEF_typeuse(rectype, n)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 - rule typeuse_case_2{n : n}: - `%`(REC_typeuse(n)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 -relation wf_heaptype: `%`(heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_0: - `%`(ANY_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_1: - `%`(EQ_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_2: - `%`(I31_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_3: - `%`(STRUCT_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_4: - `%`(ARRAY_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_5: - `%`(NONE_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_6: - `%`(FUNC_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_7: - `%`(NOFUNC_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_8: - `%`(EXN_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_9: - `%`(NOEXN_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_10: - `%`(EXTERN_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_11: - `%`(NOEXTERN_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_12: - `%`(BOT_heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_13{typeidx : typeidx}: - `%`(_IDX_heaptype(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_14{n : n}: - `%`(REC_heaptype(n)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 - rule heaptype_case_15{rectype : rectype, n : n}: - `%`(_DEF_heaptype(rectype, n)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 -relation wf_valtype: `%`(valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 - rule valtype_case_0: - `%`(I32_valtype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 - rule valtype_case_1: - `%`(I64_valtype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 - rule valtype_case_2: - `%`(F32_valtype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 - rule valtype_case_3: - `%`(F64_valtype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 - rule valtype_case_4: - `%`(V128_valtype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 - rule valtype_case_5{`null?` : null?, heaptype : heaptype}: - `%`(REF_valtype(null?{null <- `null?`}, heaptype)) - -- wf_heaptype: `%`(heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 - rule valtype_case_6: - `%`(BOT_valtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 -relation wf_storagetype: `%`(storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_0: - `%`(BOT_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_1: - `%`(I32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_2: - `%`(I64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_3: - `%`(F32_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_4: - `%`(F64_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_5: - `%`(V128_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_6{`null?` : null?, heaptype : heaptype}: - `%`(REF_storagetype(null?{null <- `null?`}, heaptype)) - -- wf_heaptype: `%`(heaptype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_7: - `%`(I8_storagetype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 - rule storagetype_case_8: - `%`(I16_storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 -relation wf_fieldtype: `%`(fieldtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 - rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: - `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) - -- wf_storagetype: `%`(storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 -relation wf_comptype: `%`(comptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 - rule comptype_case_0{list : list(syntax fieldtype)}: - `%`(STRUCT_comptype(list)) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 - rule comptype_case_1{fieldtype : fieldtype}: - `%`(ARRAY_comptype(fieldtype)) - -- wf_fieldtype: `%`(fieldtype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 - rule comptype_case_2{resulttype : resulttype, var_0 : resulttype}: - `%`(`FUNC%->%`_comptype(resulttype, var_0)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 -relation wf_subtype: `%`(subtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 - rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: - `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) - -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} - -- wf_comptype: `%`(comptype) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax typevar = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation wf_typevar: `%`(typevar) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule typevar_case_0{typeidx : typeidx}: - `%`(_IDX_typevar(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule typevar_case_1{n : n}: - `%`(REC_typevar(n)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax reftype = - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation wf_reftype: `%`(reftype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule reftype_case_0{`null?` : null?, heaptype : heaptype}: - `%`(REF_reftype(null?{null <- `null?`}, heaptype)) - -- wf_heaptype: `%`(heaptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax Inn = addrtype - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax Fnn = - | F32 - | F64 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax Vnn = vectype - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax Cnn = - | I32 - | I64 - | F32 - | F64 - | V128 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ANYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EQREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $I31REF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $STRUCTREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ARRAYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLFUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax packtype = - | I8 - | I16 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax lanetype = - | I32 - | I64 - | F32 - | F64 - | I8 - | I16 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax Pnn = packtype - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax Jnn = - | I32 - | I64 - | I8 - | I16 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax Lnn = lanetype - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, u64?) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation wf_limits: `%`(limits) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule limits_case_0{u64 : u64, var_0 : u64?}: - `%`(`[%..%]`_limits(u64, var_0)) - -- wf_uN: `%%`(64, u64) - -- (wf_uN: `%%`(64, var_0))?{var_0 <- var_0} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax tagtype = typeuse - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax globaltype = - | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation wf_globaltype: `%`(globaltype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: - `%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) - -- wf_valtype: `%`(valtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation wf_memtype: `%`(memtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule memtype_case_0{addrtype : addrtype, limits : limits}: - `%`(`%%PAGE`_memtype(addrtype, limits)) - -- wf_limits: `%`(limits) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax tabletype = - | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation wf_tabletype: `%`(tabletype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: - `%`(`%%%`_tabletype(addrtype, limits, reftype)) - -- wf_limits: `%`(limits) - -- wf_reftype: `%`(reftype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax datatype = - | OK - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax elemtype = reftype - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax externtype = - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype}(globaltype : globaltype) - | MEM{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype}(tabletype : tabletype) - | FUNC{typeuse : typeuse}(typeuse : typeuse) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation wf_externtype: `%`(externtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule externtype_case_0{tagtype : tagtype}: - `%`(TAG_externtype(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule externtype_case_1{globaltype : globaltype}: - `%`(GLOBAL_externtype(globaltype)) - -- wf_globaltype: `%`(globaltype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule externtype_case_2{memtype : memtype}: - `%`(MEM_externtype(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule externtype_case_3{tabletype : tabletype}: - `%`(TABLE_externtype(tabletype)) - -- wf_tabletype: `%`(tabletype) - - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule externtype_case_4{typeuse : typeuse}: - `%`(FUNC_externtype(typeuse)) - -- wf_typeuse: `%`(typeuse) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -syntax moduletype = - | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -relation wf_moduletype: `%`(moduletype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - rule moduletype_case_0{`externtype*` : externtype*, var_0 : externtype*}: - `%`(`%->%`_moduletype(externtype*{externtype <- `externtype*`}, var_0)) - -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} - -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = I32_Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = F32_Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = I8_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = I16_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = I32_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = I64_Jnn - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $size(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(I32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(I64_numtype) = 64 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(F32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(F64_numtype) = 64 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $vsize(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vsize(V128_vectype) = 128 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $psize(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $psize(I8_packtype) = 8 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $psize(I16_packtype) = 16 - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $lsize(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $isize(Inn : Inn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $isize{Inn : addrtype}(Inn) = $size((Inn : addrtype <: numtype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $jsize(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $fsize(Fnn : Fnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_isize(nat : nat) : Inn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(32) = ?(I32_Inn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(64) = ?(I64_Inn) - def $inv_isize{x0 : nat}(x0) = ?() - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_jsize(nat : nat) : Jnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(8) = ?(I8_Jnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(16) = ?(I16_Jnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ?((!($inv_isize(n)) : addrtype <: Jnn)) - def $inv_jsize{x0 : nat}(x0) = ?() - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_fsize(nat : nat) : Fnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(32) = ?(F32_Fnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(64) = ?(F64_Fnn) - def $inv_fsize{x0 : nat}(x0) = ?() - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $sizenn(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $sizenn{nt : numtype}(nt) = $size(nt) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $sizenn1(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $sizenn1{nt : numtype}(nt) = $size(nt) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $sizenn2(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $sizenn2{nt : numtype}(nt) = $size(nt) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $vsizenn(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vsizenn{vt : vectype}(vt) = $vsize(vt) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $psizenn(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $psizenn{pt : packtype}(pt) = $psize(pt) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $lsizenn(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsizenn{lt : lanetype}(lt) = $lsize(lt) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $lsizenn1(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $lsizenn2(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $jsizenn(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $inv_jsizenn(nat : nat) : Jnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = ?(!($inv_jsize(n))) - def $inv_jsizenn{x0 : nat}(x0) = ?() - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $lunpack(lanetype : lanetype) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $unpack(storagetype : storagetype) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype - -- wf_valtype: `%`(I32_valtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $nunpack(storagetype : storagetype) : numtype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = ?(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_numtype) - def $nunpack{x0 : storagetype}(x0) = ?() - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $vunpack(storagetype : storagetype) : vectype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = ?(vectype) - def $vunpack{x0 : storagetype}(x0) = ?() - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $cunpack(storagetype : storagetype) : consttype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = ?(consttype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_consttype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ?(($lunpack(lanetype) : numtype <: consttype)) - def $cunpack{x0 : storagetype}(x0) = ?() - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) then at_1 else at_2) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $diffrt(reftype : reftype, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) - -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 - def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 - def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 - def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 - def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 - def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 - def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 - def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 - def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 - def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 - def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 - def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 - def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 - def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 - def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 -def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 - def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 - def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 -def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 - def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 - def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 - def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 -def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 -def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 -def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 -def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype - -- wf_valtype: `%`(BOT_valtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 -def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 -def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 -def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 -def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 -def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) - -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} - -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 -def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) - -- wf_externtype: `%`(FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_all_valtype(valtype : valtype, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 -def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 - def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 -def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 -def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 - def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) -} - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tagtype(tagtype : tagtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_globaltype(globaltype : globaltype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_memtype(memtype : memtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tabletype(tabletype : tabletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_datatype(datatype : datatype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_elemtype(elemtype : elemtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_externtype(externtype : externtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_moduletype(moduletype : moduletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax num_ = - | mk_num__0{Inn : Inn, var_x : iN}(Inn : Inn, var_x : iN) - | mk_num__1{Fnn : Fnn, var_x : fN}(Fnn : Fnn, var_x : fN) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_num_: `%%`(numtype, num_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: - `%%`(numtype, mk_num__0_num_(Inn, var_x)) - -- wf_uN: `%%`($size((Inn : addrtype <: numtype)), var_x) - -- if (numtype = (Inn : addrtype <: numtype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: - `%%`(numtype, mk_num__1_num_(Fnn, var_x)) - -- wf_fN: `%%`($sizenn((Fnn : Fnn <: numtype)), var_x) - -- if (numtype = (Fnn : Fnn <: numtype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_num__0(var_x : num_) : iN? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_num__0{var_x : num_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_num__1(var_x : num_) : fN? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_num__1{var_x : num_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax pack_ = iN - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax lane_ = - | mk_lane__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) - | mk_lane__1{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) - | mk_lane__2{Jnn : Jnn, var_x : iN}(Jnn : Jnn, var_x : iN) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_lane_: `%%`(lanetype, lane_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: - `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) - -- wf_num_: `%%`(numtype, var_x) - -- if (lanetype = (numtype : numtype <: lanetype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: - `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) - -- wf_uN: `%%`($psize(packtype), var_x) - -- if (lanetype = (packtype : packtype <: lanetype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: - `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) - -- wf_uN: `%%`($lsize((Jnn : Jnn <: lanetype)), var_x) - -- if (lanetype = (Jnn : Jnn <: lanetype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_lane__0(var_x : lane_) : num_? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lane__0{var_x : lane_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_lane__1(var_x : lane_) : pack_? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lane__1{var_x : lane_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_lane__2(var_x : lane_) : iN? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lane__2{var_x : lane_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vec_ = vN - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax lit_ = - | mk_lit__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) - | mk_lit__1{vectype : vectype, var_x : vec_}(vectype : vectype, var_x : vec_) - | mk_lit__2{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_lit_: `%%`(storagetype, lit_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: - `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) - -- wf_num_: `%%`(numtype, var_x) - -- if (storagetype = (numtype : numtype <: storagetype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: - `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) - -- wf_uN: `%%`($vsize(vectype), var_x) - -- if (storagetype = (vectype : vectype <: storagetype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: - `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) - -- wf_uN: `%%`($psize(packtype), var_x) - -- if (storagetype = (packtype : packtype <: storagetype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_lit__0(var_x : lit_) : num_? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lit__0{var_x : lit_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_lit__1(var_x : lit_) : vec_? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lit__1{var_x : lit_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_lit__2(var_x : lit_) : pack_? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_lit__2{var_x : lit_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax sz = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_sz_0(x : sz) : (nat) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_sz: `%`(sz) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule sz_case_0{i : nat}: - `%`(`%`_sz(i)) - -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax sx = - | U - | S - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax unop_Inn = - | CLZ - | CTZ - | POPCNT - | EXTEND{sz : sz}(sz : sz) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_unop_Inn: `%%`(Inn, unop_Inn) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule unop_Inn_case_0{Inn : Inn}: - `%%`(Inn, CLZ_unop_Inn) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule unop_Inn_case_1{Inn : Inn}: - `%%`(Inn, CTZ_unop_Inn) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule unop_Inn_case_2{Inn : Inn}: - `%%`(Inn, POPCNT_unop_Inn) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule unop_Inn_case_3{Inn : Inn, sz : sz}: - `%%`(Inn, EXTEND_unop_Inn(sz)) - -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax unop_Fnn = - | ABS - | NEG - | SQRT - | CEIL - | FLOOR - | TRUNC - | NEAREST - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax unop_ = - | mk_unop__0{Inn : Inn, var_x : unop_Inn}(Inn : Inn, var_x : unop_Inn) - | mk_unop__1{Fnn : Fnn, var_x : unop_Fnn}(Fnn : Fnn, var_x : unop_Fnn) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_unop_: `%%`(numtype, unop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: - `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) - -- wf_unop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: - `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_unop__0(var_x : unop_) : unop_Inn? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_unop__0{var_x : unop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_unop__1(var_x : unop_) : unop_Fnn? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_unop__1{var_x : unop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax binop_Inn = - | ADD - | SUB - | MUL - | DIV{sx : sx}(sx : sx) - | REM{sx : sx}(sx : sx) - | AND - | OR - | XOR - | SHL - | SHR{sx : sx}(sx : sx) - | ROTL - | ROTR - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax binop_Fnn = - | ADD - | SUB - | MUL - | DIV - | MIN - | MAX - | COPYSIGN - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax binop_ = - | mk_binop__0{Inn : Inn, var_x : binop_Inn}(Inn : Inn, var_x : binop_Inn) - | mk_binop__1{Fnn : Fnn, var_x : binop_Fnn}(Fnn : Fnn, var_x : binop_Fnn) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_binop_: `%%`(numtype, binop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: - `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: - `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_binop__0(var_x : binop_) : binop_Inn? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_binop__0{var_x : binop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_binop__1(var_x : binop_) : binop_Fnn? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_binop__1{var_x : binop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax testop_Inn = - | EQZ - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax testop_ = - | mk_testop__0{Inn : Inn, var_x : testop_Inn}(Inn : Inn, var_x : testop_Inn) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_testop_: `%%`(numtype, testop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: - `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_testop__0(var_x : testop_) : testop_Inn - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax relop_Inn = - | EQ - | NE - | LT{sx : sx}(sx : sx) - | GT{sx : sx}(sx : sx) - | LE{sx : sx}(sx : sx) - | GE{sx : sx}(sx : sx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax relop_Fnn = - | EQ - | NE - | LT - | GT - | LE - | GE - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax relop_ = - | mk_relop__0{Inn : Inn, var_x : relop_Inn}(Inn : Inn, var_x : relop_Inn) - | mk_relop__1{Fnn : Fnn, var_x : relop_Fnn}(Fnn : Fnn, var_x : relop_Fnn) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_relop_: `%%`(numtype, relop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: - `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) - -- if (numtype = (Inn : addrtype <: numtype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: - `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) - -- if (numtype = (Fnn : Fnn <: numtype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_relop__0(var_x : relop_) : relop_Inn? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_relop__0{var_x : relop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_relop__1(var_x : relop_) : relop_Fnn? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_relop__1{var_x : relop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax cvtop__Inn_1_Inn_2 = - | EXTEND{sx : sx}(sx : sx) - | WRAP - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: - `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) < $sizenn2((Inn_2 : addrtype <: numtype))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: - `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) > $sizenn2((Inn_2 : addrtype <: numtype))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax cvtop__Inn_1_Fnn_2 = - | CONVERT{sx : sx}(sx : sx) - | REINTERPRET - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: - `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: - `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) - -- if ($sizenn1((Inn_1 : addrtype <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax cvtop__Fnn_1_Inn_2 = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) - | REINTERPRET - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: - `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: - `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: - `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : addrtype <: numtype))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax cvtop__Fnn_1_Fnn_2 = - | PROMOTE - | DEMOTE - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: - `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: - `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax cvtop__ = - | mk_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) - | mk_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) - | mk_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) - | mk_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: - `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) - -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) - -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) - -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: - `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) - -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) - -- if (numtype_1 = (Inn_1 : addrtype <: numtype)) - -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: - `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) - -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) - -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) - -- if (numtype_2 = (Inn_2 : addrtype <: numtype)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: - `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) - -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) - -- if (numtype_1 = (Fnn_1 : Fnn <: numtype)) - -- if (numtype_2 = (Fnn_2 : Fnn <: numtype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax dim = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_dim_0(x : dim) : (nat) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_dim: `%`(dim) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule dim_case_0{i : nat}: - `%`(`%`_dim(i)) - -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax shape = - | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_shape: `%`(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule shape_case_0{lanetype : lanetype, dim : dim}: - `%`(`%X%`_shape(lanetype, dim)) - -- wf_dim: `%`(dim) - -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $dim(shape : shape) : dim - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) - -- wf_dim: `%`(`%`_dim(N)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $lanetype(shape : shape) : lanetype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $unpackshape(shape : shape) : numtype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax ishape = - | `%`{shape : shape, Jnn : Jnn}(shape : shape) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_ishape_0(x : ishape) : (shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_ishape: `%`(ishape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule ishape_case_0{shape : shape, Jnn : Jnn}: - `%`(`%`_ishape(shape)) - -- wf_shape: `%`(shape) - -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax bshape = - | `%`{shape : shape}(shape : shape) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_bshape_0(x : bshape) : (shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_bshape: `%`(bshape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule bshape_case_0{shape : shape}: - `%`(`%`_bshape(shape)) - -- wf_shape: `%`(shape) - -- if ($lanetype(shape) = I8_lanetype) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax zero = - | ZERO - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax half = - | LOW - | HIGH - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vvunop = - | NOT - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vvbinop = - | AND - | ANDNOT - | OR - | XOR - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vvternop = - | BITSELECT - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vvtestop = - | ANY_TRUE - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vunop_Jnn_M = - | ABS - | NEG - | POPCNT - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, ABS_vunop_Jnn_M) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, NEG_vunop_Jnn_M) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vunop_Fnn_M = - | ABS - | NEG - | SQRT - | CEIL - | FLOOR - | TRUNC - | NEAREST - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vunop_ = - | mk_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) - | mk_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vunop_: `%%`(shape, vunop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: - `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) - -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: - `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vunop__0{var_x : vunop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vunop__1{var_x : vunop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vbinop_Jnn_M = - | ADD - | SUB - | ADD_SAT{sx : sx}(sx : sx) - | SUB_SAT{sx : sx}(sx : sx) - | MUL - | `AVGRU` - | `Q15MULR_SATS` - | `RELAXED_Q15MULRS` - | MIN{sx : sx}(sx : sx) - | MAX{sx : sx}(sx : sx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, ADD_vbinop_Jnn_M) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, SUB_vbinop_Jnn_M) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: - `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: - `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, MUL_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, `AVGRU`_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: - `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: - `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) - -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vbinop_Fnn_M = - | ADD - | SUB - | MUL - | DIV - | MIN - | MAX - | PMIN - | PMAX - | RELAXED_MIN - | RELAXED_MAX - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vbinop_ = - | mk_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) - | mk_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vbinop_: `%%`(shape, vbinop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: - `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) - -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: - `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vternop_Jnn_M = - | RELAXED_LANESELECT - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vternop_Fnn_M = - | RELAXED_MADD - | RELAXED_NMADD - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vternop_ = - | mk_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) - | mk_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vternop_: `%%`(shape, vternop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: - `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: - `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vternop__0{var_x : vternop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vternop__1{var_x : vternop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vtestop_Jnn_M = - | ALL_TRUE - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vtestop_ = - | mk_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vtestop_: `%%`(shape, vtestop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: - `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vrelop_Jnn_M = - | EQ - | NE - | LT{sx : sx}(sx : sx) - | GT{sx : sx}(sx : sx) - | LE{sx : sx}(sx : sx) - | GE{sx : sx}(sx : sx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, EQ_vrelop_Jnn_M) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: - `%%%`(Jnn, M, NE_vrelop_Jnn_M) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: - `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: - `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: - `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: - `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vrelop_Fnn_M = - | EQ - | NE - | LT - | GT - | LE - | GE - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vrelop_ = - | mk_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) - | mk_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vrelop_: `%%`(shape, vrelop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: - `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) - -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) - -- if (shape = `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: - `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) - -- if (shape = `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vshiftop_Jnn_M = - | SHL - | SHR{sx : sx}(sx : sx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vshiftop_ = - | mk_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vshiftop_: `%%`(ishape, vshiftop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: - `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) - -- if (ishape = `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vswizzlop_M = - | SWIZZLE - | RELAXED_SWIZZLE - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vswizzlop_ = - | mk_vswizzlop__0{M : M, var_x : vswizzlop_M}(M : M, var_x : vswizzlop_M) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: - `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) - -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = - | EXTADD_PAIRWISE{sx : sx}(sx : sx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: - `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) - -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextunop__ = - | mk_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: - `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) - -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = - | EXTMUL{half : half, sx : sx}(half : half, sx : sx) - | `DOTS` - | `RELAXED_DOTS` - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: - `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: - `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: - `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextbinop__ = - | mk_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: - `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) - -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = - | `RELAXED_DOT_ADDS` - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: - `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2) - -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextternop__ = - | mk_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: - `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) - -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (ishape_1 = `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- if (ishape_2 = `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = - | EXTEND{half : half, sx : sx}(half : half, sx : sx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: - `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) - -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = - | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: - `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)) - -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = - | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) - | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: - `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) - -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: - `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) - -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = - | DEMOTE{zero : zero}(zero : zero) - | `PROMOTELOW` - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: - `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) - -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: - `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2) - -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vcvtop__ = - | mk_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) - | mk_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) - | mk_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) - | mk_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: - `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) - -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: - `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) - -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: - `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) - -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: - `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) - -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) - -- if (shape_1 = `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))) - -- if (shape_2 = `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax memarg = -{ - ALIGN{u32 : u32} u32, - OFFSET{u64 : u64} u64 -} - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_memarg: `%`(memarg) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule memarg_case_{var_0 : u32, var_1 : u64}: - `%`({ALIGN var_0, OFFSET var_1}) - -- wf_uN: `%%`(32, var_0) - -- wf_uN: `%%`(64, var_1) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax loadop_Inn = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: - `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) - -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax loadop_ = - | mk_loadop__0{Inn : Inn, var_x : loadop_Inn}(Inn : Inn, var_x : loadop_Inn) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_loadop_: `%%`(numtype, loadop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: - `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) - -- wf_loadop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_loadop__0(var_x : loadop_) : loadop_Inn - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax storeop_Inn = - | `%`{sz : sz}(sz : sz) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule storeop_Inn_case_0{Inn : Inn, sz : sz}: - `%%`(Inn, `%`_storeop_Inn(sz)) - -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 < $sizenn((Inn : addrtype <: numtype))) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax storeop_ = - | mk_storeop__0{Inn : Inn, var_x : storeop_Inn}(Inn : Inn, var_x : storeop_Inn) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_storeop_: `%%`(numtype, storeop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: - `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) - -- wf_storeop_Inn: `%%`(Inn, var_x) - -- if (numtype = (Inn : addrtype <: numtype)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $proj_storeop__0(var_x : storeop_) : storeop_Inn - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vloadop_ = - | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) - | SPLAT{sz : sz}(sz : sz) - | ZERO{sz : sz}(sz : sz) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_vloadop_: `%%`(vectype, vloadop_) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: - `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) - -- wf_sz: `%`(sz) - -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vloadop__case_1{vectype : vectype, sz : sz}: - `%%`(vectype, SPLAT_vloadop_(sz)) - -- wf_sz: `%`(sz) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule vloadop__case_2{vectype : vectype, sz : sz}: - `%%`(vectype, ZERO_vloadop_(sz)) - -- wf_sz: `%`(sz) - -- if ($proj_sz_0(sz).0 >= 32) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax blocktype = - | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) - | _IDX{typeidx : typeidx}(typeidx : typeidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_blocktype: `%`(blocktype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule blocktype_case_0{`valtype?` : valtype?}: - `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule blocktype_case_1{typeidx : typeidx}: - `%`(_IDX_blocktype(typeidx)) - -- wf_uN: `%%`(32, typeidx) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax addr = nat - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax arrayaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 -relation wf_addrref: `%`(addrref) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 - rule addrref_case_0{u31 : u31}: - `%`(REF.I31_NUM_addrref(u31)) - -- wf_uN: `%%`(31, u31) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 - rule addrref_case_1{structaddr : structaddr}: - `%`(REF.STRUCT_ADDR_addrref(structaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 - rule addrref_case_2{arrayaddr : arrayaddr}: - `%`(REF.ARRAY_ADDR_addrref(arrayaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 - rule addrref_case_3{funcaddr : funcaddr}: - `%`(REF.FUNC_ADDR_addrref(funcaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 - rule addrref_case_4{exnaddr : exnaddr}: - `%`(REF.EXN_ADDR_addrref(exnaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 - rule addrref_case_5{hostaddr : hostaddr}: - `%`(REF.HOST_ADDR_addrref(hostaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 - rule addrref_case_6{addrref : addrref}: - `%`(REF.EXTERN_addrref(addrref)) -} - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax catch = - | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) - | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -relation wf_catch: `%`(catch) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: - `%`(CATCH_catch(tagidx, labelidx)) - -- wf_uN: `%%`(32, tagidx) - -- wf_uN: `%%`(32, labelidx) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: - `%`(CATCH_REF_catch(tagidx, labelidx)) - -- wf_uN: `%%`(32, tagidx) - -- wf_uN: `%%`(32, labelidx) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule catch_case_2{labelidx : labelidx}: - `%`(CATCH_ALL_catch(labelidx)) - -- wf_uN: `%%`(32, labelidx) - - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - rule catch_case_3{labelidx : labelidx}: - `%`(CATCH_ALL_REF_catch(labelidx)) - -- wf_uN: `%%`(32, labelidx) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax dataaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax elemaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax globaladdr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax memaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax tableaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax tagaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax externaddr = - | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) - | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) - | MEM{memaddr : memaddr}(memaddr : memaddr) - | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) - | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exportinst = -{ - NAME{name : name} name, - ADDR{externaddr : externaddr} externaddr -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_exportinst: `%`(exportinst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule exportinst_case_{var_0 : name, var_1 : externaddr}: - `%`({NAME var_0, ADDR var_1}) - -- wf_name: `%`(var_0) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax moduleinst = -{ - TYPES{`deftype*` : deftype*} deftype*, - TAGS{`tagaddr*` : tagaddr*} tagaddr*, - GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, - MEMS{`memaddr*` : memaddr*} memaddr*, - TABLES{`tableaddr*` : tableaddr*} tableaddr*, - FUNCS{`funcaddr*` : funcaddr*} funcaddr*, - DATAS{`dataaddr*` : dataaddr*} dataaddr*, - ELEMS{`elemaddr*` : elemaddr*} elemaddr*, - EXPORTS{`exportinst*` : exportinst*} exportinst* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_moduleinst: `%`(moduleinst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) - -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax val = - | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) - | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_val: `%`(val) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_0{numtype : numtype, num_ : num_}: - `%`(CONST_val(numtype, num_)) - -- wf_num_: `%%`(numtype, num_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_1{vectype : vectype, vec_ : vec_}: - `%`(VCONST_val(vectype, vec_)) - -- wf_uN: `%%`($vsize(vectype), vec_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_2{heaptype : heaptype}: - `%`(REF.NULL_val(heaptype)) - -- wf_heaptype: `%`(heaptype) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_3{u31 : u31}: - `%`(REF.I31_NUM_val(u31)) - -- wf_uN: `%%`(31, u31) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_4{structaddr : structaddr}: - `%`(REF.STRUCT_ADDR_val(structaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_5{arrayaddr : arrayaddr}: - `%`(REF.ARRAY_ADDR_val(arrayaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_6{funcaddr : funcaddr}: - `%`(REF.FUNC_ADDR_val(funcaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_7{exnaddr : exnaddr}: - `%`(REF.EXN_ADDR_val(exnaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_8{hostaddr : hostaddr}: - `%`(REF.HOST_ADDR_val(hostaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule val_case_9{addrref : addrref}: - `%`(REF.EXTERN_val(addrref)) - -- wf_addrref: `%`(addrref) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax frame = -{ - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_frame: `%`(frame) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule frame_case_{var_0 : val?*, var_1 : moduleinst}: - `%`({LOCALS var_0, MODULE var_1}) - -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- wf_moduleinst: `%`(var_1) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 -syntax instr = - | NOP - | UNREACHABLE - | DROP - | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) - | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) - | BR{labelidx : labelidx}(labelidx : labelidx) - | BR_IF{labelidx : labelidx}(labelidx : labelidx) - | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) - | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | CALL{funcidx : funcidx}(funcidx : funcidx) - | CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) - | RETURN - | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) - | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) - | THROW{tagidx : tagidx}(tagidx : tagidx) - | THROW_REF - | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) - | LOCAL.GET{localidx : localidx}(localidx : localidx) - | LOCAL.SET{localidx : localidx}(localidx : localidx) - | LOCAL.TEE{localidx : localidx}(localidx : localidx) - | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) - | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) - | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) - | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) - | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) - | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) - | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) - | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | LOAD{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_?, memidx : memidx, memarg : memarg) - | STORE{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_?, memidx : memidx, memarg : memarg) - | VLOAD{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | MEMORY.SIZE{memidx : memidx}(memidx : memidx) - | MEMORY.GROW{memidx : memidx}(memidx : memidx) - | MEMORY.FILL{memidx : memidx}(memidx : memidx) - | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) - | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) - | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.IS_NULL - | REF.AS_NON_NULL - | REF.EQ - | REF.TEST{reftype : reftype}(reftype : reftype) - | REF.CAST{reftype : reftype}(reftype : reftype) - | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) - | REF.I31 - | I31.GET{sx : sx}(sx : sx) - | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) - | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) - | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.LEN - | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) - | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | EXTERN.CONVERT_ANY - | ANY.CONVERT_EXTERN - | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) - | UNOP{numtype : numtype, unop_ : unop_}(numtype : numtype, unop_ : unop_) - | BINOP{numtype : numtype, binop_ : binop_}(numtype : numtype, binop_ : binop_) - | TESTOP{numtype : numtype, testop_ : testop_}(numtype : numtype, testop_ : testop_) - | RELOP{numtype : numtype, relop_ : relop_}(numtype : numtype, relop_ : relop_) - | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__) - | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) - | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) - | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) - | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) - | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) - | VUNOP{shape : shape, vunop_ : vunop_}(shape : shape, vunop_ : vunop_) - | VBINOP{shape : shape, vbinop_ : vbinop_}(shape : shape, vbinop_ : vbinop_) - | VTERNOP{shape : shape, vternop_ : vternop_}(shape : shape, vternop_ : vternop_) - | VTESTOP{shape : shape, vtestop_ : vtestop_}(shape : shape, vtestop_ : vtestop_) - | VRELOP{shape : shape, vrelop_ : vrelop_}(shape : shape, vrelop_ : vrelop_) - | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_}(ishape : ishape, vshiftop_ : vshiftop_) - | VBITMASK{ishape : ishape}(ishape : ishape) - | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_}(bshape : bshape, vswizzlop_ : vswizzlop_) - | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) - | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__) - | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__) - | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__) - | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) - | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) - | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) - | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) - | TRAP -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 -relation wf_instr: `%`(instr) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_0: - `%`(NOP_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_1: - `%`(UNREACHABLE_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_2: - `%`(DROP_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_3{`valtype*?` : valtype*?}: - `%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) - -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: - `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_blocktype: `%`(blocktype) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: - `%`(LOOP_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_blocktype: `%`(blocktype) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_6{blocktype : blocktype, `instr*` : instr*, var_0 : instr*}: - `%`(`IF%%ELSE%`_instr(blocktype, instr*{instr <- `instr*`}, var_0)) - -- wf_blocktype: `%`(blocktype) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- (wf_instr: `%`(var_0))*{var_0 <- var_0} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_7{labelidx : labelidx}: - `%`(BR_instr(labelidx)) - -- wf_uN: `%%`(32, labelidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_8{labelidx : labelidx}: - `%`(BR_IF_instr(labelidx)) - -- wf_uN: `%%`(32, labelidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_9{`labelidx*` : labelidx*, var_0 : labelidx}: - `%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, var_0)) - -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} - -- wf_uN: `%%`(32, var_0) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_10{labelidx : labelidx}: - `%`(BR_ON_NULL_instr(labelidx)) - -- wf_uN: `%%`(32, labelidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_11{labelidx : labelidx}: - `%`(BR_ON_NON_NULL_instr(labelidx)) - -- wf_uN: `%%`(32, labelidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_12{labelidx : labelidx, reftype : reftype, var_0 : reftype}: - `%`(BR_ON_CAST_instr(labelidx, reftype, var_0)) - -- wf_uN: `%%`(32, labelidx) - -- wf_reftype: `%`(reftype) - -- wf_reftype: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_13{labelidx : labelidx, reftype : reftype, var_0 : reftype}: - `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, var_0)) - -- wf_uN: `%%`(32, labelidx) - -- wf_reftype: `%`(reftype) - -- wf_reftype: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_14{funcidx : funcidx}: - `%`(CALL_instr(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_15{typeuse : typeuse}: - `%`(CALL_REF_instr(typeuse)) - -- wf_typeuse: `%`(typeuse) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: - `%`(CALL_INDIRECT_instr(tableidx, typeuse)) - -- wf_uN: `%%`(32, tableidx) - -- wf_typeuse: `%`(typeuse) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_17: - `%`(RETURN_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_18{funcidx : funcidx}: - `%`(RETURN_CALL_instr(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_19{typeuse : typeuse}: - `%`(RETURN_CALL_REF_instr(typeuse)) - -- wf_typeuse: `%`(typeuse) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: - `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) - -- wf_uN: `%%`(32, tableidx) - -- wf_typeuse: `%`(typeuse) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_21{tagidx : tagidx}: - `%`(THROW_instr(tagidx)) - -- wf_uN: `%%`(32, tagidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_22: - `%`(THROW_REF_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_23{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}: - `%`(TRY_TABLE_instr(blocktype, list, instr*{instr <- `instr*`})) - -- wf_blocktype: `%`(blocktype) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_24{localidx : localidx}: - `%`(LOCAL.GET_instr(localidx)) - -- wf_uN: `%%`(32, localidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_25{localidx : localidx}: - `%`(LOCAL.SET_instr(localidx)) - -- wf_uN: `%%`(32, localidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_26{localidx : localidx}: - `%`(LOCAL.TEE_instr(localidx)) - -- wf_uN: `%%`(32, localidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_27{globalidx : globalidx}: - `%`(GLOBAL.GET_instr(globalidx)) - -- wf_uN: `%%`(32, globalidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_28{globalidx : globalidx}: - `%`(GLOBAL.SET_instr(globalidx)) - -- wf_uN: `%%`(32, globalidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_29{tableidx : tableidx}: - `%`(TABLE.GET_instr(tableidx)) - -- wf_uN: `%%`(32, tableidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_30{tableidx : tableidx}: - `%`(TABLE.SET_instr(tableidx)) - -- wf_uN: `%%`(32, tableidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_31{tableidx : tableidx}: - `%`(TABLE.SIZE_instr(tableidx)) - -- wf_uN: `%%`(32, tableidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_32{tableidx : tableidx}: - `%`(TABLE.GROW_instr(tableidx)) - -- wf_uN: `%%`(32, tableidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_33{tableidx : tableidx}: - `%`(TABLE.FILL_instr(tableidx)) - -- wf_uN: `%%`(32, tableidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_34{tableidx : tableidx, var_0 : tableidx}: - `%`(TABLE.COPY_instr(tableidx, var_0)) - -- wf_uN: `%%`(32, tableidx) - -- wf_uN: `%%`(32, var_0) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: - `%`(TABLE.INIT_instr(tableidx, elemidx)) - -- wf_uN: `%%`(32, tableidx) - -- wf_uN: `%%`(32, elemidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_36{elemidx : elemidx}: - `%`(ELEM.DROP_instr(elemidx)) - -- wf_uN: `%%`(32, elemidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_37{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}: - `%`(LOAD_instr(numtype, loadop_?{loadop_ <- `loadop_?`}, memidx, memarg)) - -- (wf_loadop_: `%%`(numtype, loadop_))?{loadop_ <- `loadop_?`} - -- wf_uN: `%%`(32, memidx) - -- wf_memarg: `%`(memarg) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_38{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}: - `%`(STORE_instr(numtype, storeop_?{storeop_ <- `storeop_?`}, memidx, memarg)) - -- (wf_storeop_: `%%`(numtype, storeop_))?{storeop_ <- `storeop_?`} - -- wf_uN: `%%`(32, memidx) - -- wf_memarg: `%`(memarg) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_39{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}: - `%`(VLOAD_instr(vectype, vloadop_?{vloadop_ <- `vloadop_?`}, memidx, memarg)) - -- (wf_vloadop_: `%%`(vectype, vloadop_))?{vloadop_ <- `vloadop_?`} - -- wf_uN: `%%`(32, memidx) - -- wf_memarg: `%`(memarg) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: - `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) - -- wf_sz: `%`(sz) - -- wf_uN: `%%`(32, memidx) - -- wf_memarg: `%`(memarg) - -- wf_uN: `%%`(8, laneidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: - `%`(VSTORE_instr(vectype, memidx, memarg)) - -- wf_uN: `%%`(32, memidx) - -- wf_memarg: `%`(memarg) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: - `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) - -- wf_sz: `%`(sz) - -- wf_uN: `%%`(32, memidx) - -- wf_memarg: `%`(memarg) - -- wf_uN: `%%`(8, laneidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_43{memidx : memidx}: - `%`(MEMORY.SIZE_instr(memidx)) - -- wf_uN: `%%`(32, memidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_44{memidx : memidx}: - `%`(MEMORY.GROW_instr(memidx)) - -- wf_uN: `%%`(32, memidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_45{memidx : memidx}: - `%`(MEMORY.FILL_instr(memidx)) - -- wf_uN: `%%`(32, memidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_46{memidx : memidx, var_0 : memidx}: - `%`(MEMORY.COPY_instr(memidx, var_0)) - -- wf_uN: `%%`(32, memidx) - -- wf_uN: `%%`(32, var_0) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_47{memidx : memidx, dataidx : dataidx}: - `%`(MEMORY.INIT_instr(memidx, dataidx)) - -- wf_uN: `%%`(32, memidx) - -- wf_uN: `%%`(32, dataidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_48{dataidx : dataidx}: - `%`(DATA.DROP_instr(dataidx)) - -- wf_uN: `%%`(32, dataidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_49{heaptype : heaptype}: - `%`(REF.NULL_instr(heaptype)) - -- wf_heaptype: `%`(heaptype) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_50: - `%`(REF.IS_NULL_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_51: - `%`(REF.AS_NON_NULL_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_52: - `%`(REF.EQ_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_53{reftype : reftype}: - `%`(REF.TEST_instr(reftype)) - -- wf_reftype: `%`(reftype) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_54{reftype : reftype}: - `%`(REF.CAST_instr(reftype)) - -- wf_reftype: `%`(reftype) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_55{funcidx : funcidx}: - `%`(REF.FUNC_instr(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_56: - `%`(REF.I31_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_57{sx : sx}: - `%`(I31.GET_instr(sx)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_58{typeidx : typeidx}: - `%`(STRUCT.NEW_instr(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_59{typeidx : typeidx}: - `%`(STRUCT.NEW_DEFAULT_instr(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_60{`sx?` : sx?, typeidx : typeidx, u32 : u32}: - `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) - -- wf_uN: `%%`(32, typeidx) - -- wf_uN: `%%`(32, u32) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_61{typeidx : typeidx, u32 : u32}: - `%`(STRUCT.SET_instr(typeidx, u32)) - -- wf_uN: `%%`(32, typeidx) - -- wf_uN: `%%`(32, u32) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_62{typeidx : typeidx}: - `%`(ARRAY.NEW_instr(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_63{typeidx : typeidx}: - `%`(ARRAY.NEW_DEFAULT_instr(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_64{typeidx : typeidx, u32 : u32}: - `%`(ARRAY.NEW_FIXED_instr(typeidx, u32)) - -- wf_uN: `%%`(32, typeidx) - -- wf_uN: `%%`(32, u32) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: - `%`(ARRAY.NEW_DATA_instr(typeidx, dataidx)) - -- wf_uN: `%%`(32, typeidx) - -- wf_uN: `%%`(32, dataidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: - `%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) - -- wf_uN: `%%`(32, typeidx) - -- wf_uN: `%%`(32, elemidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: - `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_68{typeidx : typeidx}: - `%`(ARRAY.SET_instr(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_69: - `%`(ARRAY.LEN_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_70{typeidx : typeidx}: - `%`(ARRAY.FILL_instr(typeidx)) - -- wf_uN: `%%`(32, typeidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_71{typeidx : typeidx, var_0 : typeidx}: - `%`(ARRAY.COPY_instr(typeidx, var_0)) - -- wf_uN: `%%`(32, typeidx) - -- wf_uN: `%%`(32, var_0) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: - `%`(ARRAY.INIT_DATA_instr(typeidx, dataidx)) - -- wf_uN: `%%`(32, typeidx) - -- wf_uN: `%%`(32, dataidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: - `%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) - -- wf_uN: `%%`(32, typeidx) - -- wf_uN: `%%`(32, elemidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_74: - `%`(EXTERN.CONVERT_ANY_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_75: - `%`(ANY.CONVERT_EXTERN_instr) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_76{numtype : numtype, num_ : num_}: - `%`(CONST_instr(numtype, num_)) - -- wf_num_: `%%`(numtype, num_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_77{numtype : numtype, unop_ : unop_}: - `%`(UNOP_instr(numtype, unop_)) - -- wf_unop_: `%%`(numtype, unop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_78{numtype : numtype, binop_ : binop_}: - `%`(BINOP_instr(numtype, binop_)) - -- wf_binop_: `%%`(numtype, binop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_79{numtype : numtype, testop_ : testop_}: - `%`(TESTOP_instr(numtype, testop_)) - -- wf_testop_: `%%`(numtype, testop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_80{numtype : numtype, relop_ : relop_}: - `%`(RELOP_instr(numtype, relop_)) - -- wf_relop_: `%%`(numtype, relop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}: - `%`(CVTOP_instr(numtype_1, numtype_2, cvtop__)) - -- wf_cvtop__: `%%%`(numtype_2, numtype_1, cvtop__) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_82{vectype : vectype, vec_ : vec_}: - `%`(VCONST_instr(vectype, vec_)) - -- wf_uN: `%%`($vsize(vectype), vec_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_83{vectype : vectype, vvunop : vvunop}: - `%`(VVUNOP_instr(vectype, vvunop)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: - `%`(VVBINOP_instr(vectype, vvbinop)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_85{vectype : vectype, vvternop : vvternop}: - `%`(VVTERNOP_instr(vectype, vvternop)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: - `%`(VVTESTOP_instr(vectype, vvtestop)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_87{shape : shape, vunop_ : vunop_}: - `%`(VUNOP_instr(shape, vunop_)) - -- wf_shape: `%`(shape) - -- wf_vunop_: `%%`(shape, vunop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_88{shape : shape, vbinop_ : vbinop_}: - `%`(VBINOP_instr(shape, vbinop_)) - -- wf_shape: `%`(shape) - -- wf_vbinop_: `%%`(shape, vbinop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_89{shape : shape, vternop_ : vternop_}: - `%`(VTERNOP_instr(shape, vternop_)) - -- wf_shape: `%`(shape) - -- wf_vternop_: `%%`(shape, vternop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_90{shape : shape, vtestop_ : vtestop_}: - `%`(VTESTOP_instr(shape, vtestop_)) - -- wf_shape: `%`(shape) - -- wf_vtestop_: `%%`(shape, vtestop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_91{shape : shape, vrelop_ : vrelop_}: - `%`(VRELOP_instr(shape, vrelop_)) - -- wf_shape: `%`(shape) - -- wf_vrelop_: `%%`(shape, vrelop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_92{ishape : ishape, vshiftop_ : vshiftop_}: - `%`(VSHIFTOP_instr(ishape, vshiftop_)) - -- wf_ishape: `%`(ishape) - -- wf_vshiftop_: `%%`(ishape, vshiftop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_93{ishape : ishape}: - `%`(VBITMASK_instr(ishape)) - -- wf_ishape: `%`(ishape) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_94{bshape : bshape, vswizzlop_ : vswizzlop_}: - `%`(VSWIZZLOP_instr(bshape, vswizzlop_)) - -- wf_bshape: `%`(bshape) - -- wf_vswizzlop_: `%%`(bshape, vswizzlop_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: - `%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) - -- wf_bshape: `%`(bshape) - -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}: - `%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop__)) - -- wf_ishape: `%`(ishape_1) - -- wf_ishape: `%`(ishape_2) - -- wf_vextunop__: `%%%`(ishape_2, ishape_1, vextunop__) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}: - `%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop__)) - -- wf_ishape: `%`(ishape_1) - -- wf_ishape: `%`(ishape_2) - -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, vextbinop__) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}: - `%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop__)) - -- wf_ishape: `%`(ishape_1) - -- wf_ishape: `%`(ishape_2) - -- wf_vextternop__: `%%%`(ishape_2, ishape_1, vextternop__) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: - `%`(VNARROW_instr(ishape_1, ishape_2, sx)) - -- wf_ishape: `%`(ishape_1) - -- wf_ishape: `%`(ishape_2) - -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_100{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}: - `%`(VCVTOP_instr(shape_1, shape_2, vcvtop__)) - -- wf_shape: `%`(shape_1) - -- wf_shape: `%`(shape_2) - -- wf_vcvtop__: `%%%`(shape_2, shape_1, vcvtop__) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_101{shape : shape}: - `%`(VSPLAT_instr(shape)) - -- wf_shape: `%`(shape) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: - `%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) - -- wf_shape: `%`(shape) - -- wf_uN: `%%`(8, laneidx) - -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_103{shape : shape, laneidx : laneidx}: - `%`(VREPLACE_LANE_instr(shape, laneidx)) - -- wf_shape: `%`(shape) - -- wf_uN: `%%`(8, laneidx) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_104{u31 : u31}: - `%`(REF.I31_NUM_instr(u31)) - -- wf_uN: `%%`(31, u31) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_105{structaddr : structaddr}: - `%`(REF.STRUCT_ADDR_instr(structaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_106{arrayaddr : arrayaddr}: - `%`(REF.ARRAY_ADDR_instr(arrayaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_107{funcaddr : funcaddr}: - `%`(REF.FUNC_ADDR_instr(funcaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_108{exnaddr : exnaddr}: - `%`(REF.EXN_ADDR_instr(exnaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_109{hostaddr : hostaddr}: - `%`(REF.HOST_ADDR_instr(hostaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_110{addrref : addrref}: - `%`(REF.EXTERN_instr(addrref)) - -- wf_addrref: `%`(addrref) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_111{n : n, `instr*` : instr*, var_0 : instr*}: - `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, var_0)) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- (wf_instr: `%`(var_0))*{var_0 <- var_0} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_112{n : n, frame : frame, `instr*` : instr*}: - `%`(`FRAME_%{%}%`_instr(n, frame, instr*{instr <- `instr*`})) - -- wf_frame: `%`(frame) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_113{n : n, `catch*` : catch*, `instr*` : instr*}: - `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) - -- (wf_catch: `%`(catch))*{catch <- `catch*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_114: - `%`(TRAP_instr) -} - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax expr = instr* - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $memarg0 : memarg - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} - -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $const(consttype : consttype, lit_ : lit_) : instr - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : num_}((numtype : numtype <: consttype), mk_lit__0_lit_(numtype, c)) = CONST_instr(numtype, c) - -- wf_instr: `%`(CONST_instr(numtype, c)) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : uN}((vectype : vectype <: consttype), mk_lit__1_lit_(vectype, c)) = VCONST_instr(vectype, c) - -- wf_instr: `%`(VCONST_instr(vectype, c)) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_shape(shape : shape) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_blocktype(blocktype : blocktype) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 -def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 - def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 - def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) -} - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 -def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 - def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 - def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 - def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 - def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 - def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 - def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 - def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 - def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 - def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 - def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 - def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 - def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 - def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 - def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 - def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 - def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 - def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 - def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 - def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 - def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 - def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 - def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 - def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 - def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 - def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 - def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 - def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 - def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 - def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 - def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 - def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 - def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 - def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 - def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 - def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 - def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 - def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 - def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 - def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 - def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 - def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 - def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 - def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 - def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 - def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 - def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 - def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 - def $free_instr{typeidx : uN, u32 : uN}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 - def $free_instr{typeidx : uN}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 - def $free_instr{typeidx : uN}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 - def $free_instr{typeidx : uN, u32 : uN}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 - def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 - def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 - def $free_instr{`sx?` : sx?, typeidx : uN}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 - def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 - def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 - def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 - def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 - def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 - def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 - def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 - def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 - def $free_instr{localidx : uN}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 - def $free_instr{localidx : uN}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 - def $free_instr{globalidx : uN}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 - def $free_instr{globalidx : uN}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 - def $free_instr{tableidx : uN}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 - def $free_instr{tableidx : uN}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 - def $free_instr{tableidx : uN}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 - def $free_instr{tableidx : uN}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 - def $free_instr{tableidx : uN}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 - def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 - def $free_instr{tableidx : uN, elemidx : uN}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 - def $free_instr{elemidx : uN}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 - def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 - def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 - def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 - def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 - def $free_instr{memidx : uN}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 - def $free_instr{memidx : uN}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 - def $free_instr{memidx : uN}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 - def $free_instr{memidx_1 : uN, memidx_2 : uN}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 - def $free_instr{memidx : uN, dataidx : uN}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 - def $free_instr{dataidx : uN}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 -def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 - def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] - -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) -} - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_expr(expr : expr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) - | PASSIVE - | DECLARE - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_elemmode: `%`(elemmode) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule elemmode_case_0{tableidx : tableidx, expr : expr}: - `%`(ACTIVE_elemmode(tableidx, expr)) - -- wf_uN: `%%`(32, tableidx) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule elemmode_case_1: - `%`(PASSIVE_elemmode) - - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule elemmode_case_2: - `%`(DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax datamode = - | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) - | PASSIVE - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_datamode: `%`(datamode) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule datamode_case_0{memidx : memidx, expr : expr}: - `%`(ACTIVE_datamode(memidx, expr)) - -- wf_uN: `%%`(32, memidx) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule datamode_case_1: - `%`(PASSIVE_datamode) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax type = - | TYPE{rectype : rectype}(rectype : rectype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_tag: `%`(tag) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule tag_case_0{tagtype : tagtype}: - `%`(TAG_tag(tagtype)) - -- wf_typeuse: `%`(tagtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax global = - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_global: `%`(global) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule global_case_0{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax mem = - | MEMORY{memtype : memtype}(memtype : memtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_mem: `%`(mem) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule mem_case_0{memtype : memtype}: - `%`(MEMORY_mem(memtype)) - -- wf_memtype: `%`(memtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax table = - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_table: `%`(table) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule table_case_0{tabletype : tabletype, expr : expr}: - `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax data = - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_data: `%`(data) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule data_case_0{`byte*` : byte*, datamode : datamode}: - `%`(DATA_data(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_local: `%`(local) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule local_case_0{valtype : valtype}: - `%`(LOCAL_local(valtype)) - -- wf_valtype: `%`(valtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax func = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_func: `%`(func) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_func(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax elem = - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_elem: `%`(elem) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_start: `%`(start) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule start_case_0{funcidx : funcidx}: - `%`(START_start(funcidx)) - -- wf_uN: `%%`(32, funcidx) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax import = - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_import: `%`(import) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule import_case_0{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_import(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax export = - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_export: `%`(export) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule export_case_0{name : name, externidx : externidx}: - `%`(EXPORT_export(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -syntax module = - | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -relation wf_module: `%`(module) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - rule module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}: - `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_import: `%`(import))*{import <- `import*`} - -- (wf_tag: `%`(tag))*{tag <- `tag*`} - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_mem: `%`(mem))*{mem <- `mem*`} - -- (wf_table: `%`(table))*{table <- `table*`} - -- (wf_func: `%`(func))*{func <- `func*`} - -- (wf_data: `%`(data))*{data <- `data*`} - -- (wf_elem: `%`(elem))*{elem <- `elem*`} - -- (wf_start: `%`(start))?{start <- `start?`} - -- (wf_export: `%`(export))*{export <- `export*`} - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_type(type : type) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_tag(tag : tag) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_global(global : global) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_mem(mem : mem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_table(table : table) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_local(local : local) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_func(func : func) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_datamode(datamode : datamode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_data(data : data) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elemmode(elemmode : elemmode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elem(elem : elem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_start(start : start) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_import(import : import) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_export(export : export) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_module(module : module) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $funcidx_module(module : module) : funcidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free - -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $dataidx_funcs(func*) : dataidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -syntax init = - | SET - | UNSET - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -syntax localtype = - | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -relation wf_localtype: `%`(localtype) - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - rule localtype_case_0{init : init, valtype : valtype}: - `%`(`%%`_localtype(init, valtype)) - -- wf_valtype: `%`(valtype) - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -syntax instrtype = - | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -relation wf_instrtype: `%`(instrtype) - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, var_0 : resulttype}: - `%`(`%->_%%`_instrtype(resulttype, localidx*{localidx <- `localidx*`}, var_0)) - -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -syntax context = -{ - TYPES{`deftype*` : deftype*} deftype*, - RECS{`subtype*` : subtype*} subtype*, - TAGS{`tagtype*` : tagtype*} tagtype*, - GLOBALS{`globaltype*` : globaltype*} globaltype*, - MEMS{`memtype*` : memtype*} memtype*, - TABLES{`tabletype*` : tabletype*} tabletype*, - FUNCS{`deftype*` : deftype*} deftype*, - DATAS{`datatype*` : datatype*} datatype*, - ELEMS{`elemtype*` : elemtype*} elemtype*, - LOCALS{`localtype*` : localtype*} localtype*, - LABELS{`resulttype*` : resulttype*} resulttype*, - RETURN{`resulttype?` : resulttype?} resulttype?, - REFS{`funcidx*` : funcidx*} funcidx* -} - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -relation wf_context: `%`(context) - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - rule context_case_{var_0 : deftype*, var_1 : subtype*, var_2 : tagtype*, var_3 : globaltype*, var_4 : memtype*, var_5 : tabletype*, var_6 : deftype*, var_7 : datatype*, var_8 : elemtype*, var_9 : localtype*, var_10 : resulttype*, var_11 : resulttype?, var_12 : funcidx*}: - `%`({TYPES var_0, RECS var_1, TAGS var_2, GLOBALS var_3, MEMS var_4, TABLES var_5, FUNCS var_6, DATAS var_7, ELEMS var_8, LOCALS var_9, LABELS var_10, RETURN var_11, REFS var_12}) - -- (wf_subtype: `%`(var_1))*{var_1 <- var_1} - -- (wf_typeuse: `%`(var_2))*{var_2 <- var_2} - -- (wf_globaltype: `%`(var_3))*{var_3 <- var_3} - -- (wf_memtype: `%`(var_4))*{var_4 <- var_4} - -- (wf_tabletype: `%`(var_5))*{var_5 <- var_5} - -- (wf_reftype: `%`(var_8))*{var_8 <- var_8} - -- (wf_localtype: `%`(var_9))*{var_9 <- var_9} - -- (wf_uN: `%%`(32, var_12))*{var_12 <- var_12} - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -rec { - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 -def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 - def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 - def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) -} - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -rec { - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 -def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 - def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 - def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) -} - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_valtype(context : context, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_deftype(context : context, deftype : deftype) : deftype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_tagtype(context : context, tagtype : tagtype) : tagtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_externtype(context : context, externtype : externtype) : externtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) - -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_moduletype(context : context, moduletype : moduletype) : moduletype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Numtype_ok: `%|-%:OK`(context, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, numtype : numtype}: - `%|-%:OK`(C, numtype) - -- wf_context: `%`(C) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Vectype_ok: `%|-%:OK`(context, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, vectype : vectype}: - `%|-%:OK`(C, vectype) - -- wf_context: `%`(C) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation wf_oktypeidx: `%`(oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule oktypeidx_case_0{typeidx : typeidx}: - `%`(OK_oktypeidx(typeidx)) - -- wf_uN: `%%`(32, typeidx) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidxnat = - | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation wf_oktypeidxnat: `%`(oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule oktypeidxnat_case_0{typeidx : typeidx, nat : nat}: - `%`(OK_oktypeidxnat(typeidx, nat)) - -- wf_uN: `%%`(32, typeidx) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Packtype_ok: `%|-%:OK`(context, packtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, packtype : packtype}: - `%|-%:OK`(C, packtype) - -- wf_context: `%`(C) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, packtype : packtype}: - `%|-%<:%`(C, packtype, packtype) - -- wf_context: `%`(C) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, numtype : numtype}: - `%|-%<:%`(C, numtype, numtype) - -- wf_context: `%`(C) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype}: - `%~~%`(deftype, comptype) - -- wf_comptype: `%`(comptype) - -- if ($expanddt(deftype) = comptype) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, vectype : vectype}: - `%|-%<:%`(C, vectype, vectype) - -- wf_context: `%`(C) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{deftype : deftype, x : uN, i : nat}((deftype : deftype <: typeuse), x, i) = true - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{typeidx : uN, x : uN, i : nat}(_IDX_typeuse(typeidx), x, i) = ($proj_uN_0(typeidx).0 < $proj_uN_0(x).0) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{j : nat, x : uN, i : nat}(REC_typeuse(j), x, i) = (j < i) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht(context : context, heaptype : heaptype) : subtype - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(typeidx).0]) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -rec { - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 -relation Heaptype_ok: `%|-%:OK`(context, heaptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 - rule abs{C : context, absheaptype : absheaptype}: - `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - -- wf_context: `%`(C) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 - rule typeuse{C : context, typeuse : typeuse}: - `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 -relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 - rule _{C : context, heaptype : heaptype}: - `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) - -- Heaptype_ok: `%|-%:OK`(C, heaptype) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 -relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 - rule num{C : context, numtype : numtype}: - `%|-%:OK`(C, (numtype : numtype <: valtype)) - -- wf_context: `%`(C) - -- Numtype_ok: `%|-%:OK`(C, numtype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 - rule vec{C : context, vectype : vectype}: - `%|-%:OK`(C, (vectype : vectype <: valtype)) - -- wf_context: `%`(C) - -- Vectype_ok: `%|-%:OK`(C, vectype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 - rule ref{C : context, reftype : reftype}: - `%|-%:OK`(C, (reftype : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype) - -- Reftype_ok: `%|-%:OK`(C, reftype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 - rule bot{C : context}: - `%|-%:OK`(C, BOT_valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(BOT_valtype) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 -relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 - rule typeidx{C : context, typeidx : typeidx, dt : deftype}: - `%|-%:OK`(C, _IDX_typeuse(typeidx)) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 - rule rec{C : context, i : n, st : subtype}: - `%|-%:OK`(C, REC_typeuse(i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(st) - -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) - -- if (C.RECS_context[i] = st) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 - rule deftype{C : context, deftype : deftype}: - `%|-%:OK`(C, (deftype : deftype <: typeuse)) - -- wf_context: `%`(C) - -- Deftype_ok: `%|-%:OK`(C, deftype) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 -relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 - rule _{C : context, `t*` : valtype*}: - `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t))*{t <- `t*`} - -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 -relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 - rule _{C : context, storagetype : storagetype}: - `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) - -- Storagetype_ok: `%|-%:OK`(C, storagetype) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 -relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 - rule val{C : context, valtype : valtype}: - `%|-%:OK`(C, (valtype : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- Valtype_ok: `%|-%:OK`(C, valtype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 - rule pack{C : context, packtype : packtype}: - `%|-%:OK`(C, (packtype : packtype <: storagetype)) - -- wf_context: `%`(C) - -- Packtype_ok: `%|-%:OK`(C, packtype) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 -relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 - rule struct{C : context, `fieldtype*` : fieldtype*}: - `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 - rule array{C : context, fieldtype : fieldtype}: - `%|-%:OK`(C, ARRAY_comptype(fieldtype)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) - -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 - rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 -relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: - `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) - -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} - -- if (|x*{x <- `x*`}| <= 1) - -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 -relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 - rule empty{C : context, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) - -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) - -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 - rule _rec2{C : context, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- wf_context: `%`(C) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) - -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 -relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 - rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: - `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) - -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} - -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) - -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) - -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:91.1-91.126 -relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 - rule empty{C : context, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- wf_context: `%`(C) - -- wf_subtype: `%`(subtype_1) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) - -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) - -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.102 -relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 - rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: - `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- wf_context: `%`(C) - -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) - -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) - -- if (i < n) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:95.1-95.108 -relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 - rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: - `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) - -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 - rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: - `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) - -- wf_context: `%`(C) - -- wf_comptype: `%`(ARRAY_comptype(ft_1)) - -- wf_comptype: `%`(ARRAY_comptype(ft_2)) - -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 - rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: - `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 -relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 - rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: - `%|-%<:%`(C, deftype_1, deftype_2) - -- wf_context: `%`(C) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) - -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 -relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 - rule refl{C : context, heaptype : heaptype}: - `%|-%<:%`(C, heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 - rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: - `%|-%<:%`(C, heaptype_1, heaptype_2) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype_1) - -- wf_heaptype: `%`(heaptype_2) - -- wf_heaptype: `%`(heaptype') - -- Heaptype_ok: `%|-%:OK`(C, heaptype') - -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') - -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 - rule `eq-any`{C : context}: - `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(EQ_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 - rule `i31-eq`{C : context}: - `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(I31_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 - rule `struct-eq`{C : context}: - `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 - rule `array-eq`{C : context}: - `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_heaptype: `%`(EQ_heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 - rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(STRUCT_heaptype) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 - rule array{C : context, deftype : deftype, fieldtype : fieldtype}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(ARRAY_heaptype) - -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) - -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 - rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(FUNC_heaptype) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 - rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) - -- wf_context: `%`(C) - -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 - rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: - `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 - rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: - `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 - rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: - `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(REC_heaptype(i)) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) - -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 - rule none{C : context, heaptype : heaptype}: - `%|-%<:%`(C, NONE_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NONE_heaptype) - -- wf_heaptype: `%`(ANY_heaptype) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 - rule nofunc{C : context, heaptype : heaptype}: - `%|-%<:%`(C, NOFUNC_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOFUNC_heaptype) - -- wf_heaptype: `%`(FUNC_heaptype) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 - rule noexn{C : context, heaptype : heaptype}: - `%|-%<:%`(C, NOEXN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXN_heaptype) - -- wf_heaptype: `%`(EXN_heaptype) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 - rule noextern{C : context, heaptype : heaptype}: - `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(NOEXTERN_heaptype) - -- wf_heaptype: `%`(EXTERN_heaptype) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 - rule bot{C : context, heaptype : heaptype}: - `%|-%<:%`(C, BOT_heaptype, heaptype) - -- wf_context: `%`(C) - -- wf_heaptype: `%`(heaptype) - -- wf_heaptype: `%`(BOT_heaptype) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 -relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 - rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: - `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(), ht_2)) - -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 - rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: - `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) - -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 -relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 - rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: - `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) - -- wf_context: `%`(C) - -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 - rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: - `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) - -- wf_context: `%`(C) - -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 - rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: - `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) - -- wf_context: `%`(C) - -- wf_reftype: `%`(reftype_1) - -- wf_reftype: `%`(reftype_2) - -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 - rule bot{C : context, valtype : valtype}: - `%|-%<:%`(C, BOT_valtype, valtype) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype) - -- wf_valtype: `%`(BOT_valtype) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 -relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 - rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} - -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) - -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 -relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 - rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) - -- wf_context: `%`(C) - -- wf_valtype: `%`(valtype_1) - -- wf_valtype: `%`(valtype_2) - -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 - rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: - `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) - -- wf_context: `%`(C) - -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 -relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 - rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: - `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) - -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 - rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: - `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) - -- wf_context: `%`(C) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) - -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) -} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Instrtype_ok: `%|-%:OK`(context, instrtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: - `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_localtype: `%`(lct))*{lct <- `lct*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} - -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Expand_use: `%~~_%%`(typeuse, context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule deftype{deftype : deftype, C : context, comptype : comptype}: - `%~~_%%`((deftype : deftype <: typeuse), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- Expand: `%~~%`(deftype, comptype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: - `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) - -- wf_context: `%`(C) - -- wf_comptype: `%`(comptype) - -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Limits_ok: `%|-%:%`(context, limits, nat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, n : n, `m?` : m?, k : nat}: - `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) - -- if (n <= k) - -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Tagtype_ok: `%|-%:OK`(context, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:OK`(C, typeuse) - -- wf_context: `%`(C) - -- wf_typeuse: `%`(typeuse) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Globaltype_ok: `%|-%:OK`(context, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, t : valtype}: - `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- Valtype_ok: `%|-%:OK`(C, t) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Memtype_ok: `%|-%:OK`(context, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, addrtype : addrtype, limits : limits}: - `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) - -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Tabletype_ok: `%|-%:OK`(context, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: - `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) - -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) - -- Reftype_ok: `%|-%:OK`(C, reftype) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -relation Externtype_ok: `%|-%:OK`(context, externtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule tag{C : context, tagtype : tagtype}: - `%|-%:OK`(C, TAG_externtype(tagtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype)) - -- Tagtype_ok: `%|-%:OK`(C, tagtype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule global{C : context, globaltype : globaltype}: - `%|-%:OK`(C, GLOBAL_externtype(globaltype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) - -- Globaltype_ok: `%|-%:OK`(C, globaltype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule mem{C : context, memtype : memtype}: - `%|-%:OK`(C, MEM_externtype(memtype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype)) - -- Memtype_ok: `%|-%:OK`(C, memtype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule table{C : context, tabletype : tabletype}: - `%|-%:OK`(C, TABLE_externtype(tabletype)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype)) - -- Tabletype_ok: `%|-%:OK`(C, tabletype) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:OK`(C, FUNC_externtype(typeuse)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype(typeuse)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: - `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- wf_context: `%`(C) - -- (wf_uN: `%%`(32, x))*{x <- `x*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) - -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} - -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Limits_sub: `%|-%<:%`(context, limits, limits) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: - `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) - -- if (n_1 >= n_2) - -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule eps{C : context, n_1 : n, n_2 : n}: - `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) - -- wf_context: `%`(C) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) - -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) - -- if (n_1 >= n_2) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) - -- wf_context: `%`(C) - -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) - -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) - -- wf_context: `%`(C) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) - -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: - `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) - -- wf_context: `%`(C) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) - -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: - `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- wf_context: `%`(C) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) - -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) - -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) - -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec -relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: - `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TAG_externtype(tagtype_1)) - -- wf_externtype: `%`(TAG_externtype(tagtype_2)) - -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: - `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) - -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) - -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: - `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(MEM_externtype(memtype_1)) - -- wf_externtype: `%`(MEM_externtype(memtype_2)) - -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: - `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) - -- wf_context: `%`(C) - -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) - -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) - -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externtype: `%`(FUNC_externtype((deftype_1 : deftype <: typeuse))) - -- wf_externtype: `%`(FUNC_externtype((deftype_2 : deftype <: typeuse))) - -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule valtype{C : context, `valtype?` : valtype?}: - `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) - -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Catch_ok: `%|-%:OK`(context, catch) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: - `%|-%:OK`(C, CATCH_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: - `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_REF_catch(x, l)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_all{C : context, l : labelidx}: - `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule catch_all_ref{C : context, l : labelidx}: - `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- wf_context: `%`(C) - -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) - -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -def $default_(valtype : valtype) : val? - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : addrtype}((Inn : addrtype <: valtype)) = ?(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - -- wf_val: `%`(CONST_val((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN(0)))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -- wf_val: `%`(CONST_val((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : vectype}((Vnn : vectype <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) - -- wf_val: `%`(VCONST_val(Vnn, `%`_vec_(0))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) - -- wf_val: `%`(REF.NULL_val(ht)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Defaultable: `|-%DEFAULTABLE`(valtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: - `|-%DEFAULTABLE`(t) - -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule _{n : n, m : m, at : addrtype, N : N}: - `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) - -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) - -- if (m < (2 ^ $size((at : addrtype <: numtype)))) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -def $is_packtype(storagetype : storagetype) : bool - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 -relation Instr_ok: `%|-%:%`(context, instr, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 - rule nop{C : context}: - `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(NOP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 - rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 - rule drop{C : context, t : valtype}: - `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DROP_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- Valtype_ok: `%|-%:OK`(C, t) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 - rule `select-expl`{C : context, t : valtype}: - `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(SELECT_instr(?([t]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- Valtype_ok: `%|-%:OK`(C, t) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 - rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_valtype: `%`(t') - -- wf_instr: `%`(SELECT_instr(?())) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) - -- Valtype_ok: `%|-%:OK`(C, t) - -- Valtype_sub: `%|-%<:%`(C, t, t') - -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 - rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 - rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 - rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: - `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 - rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 - rule br_if{C : context, l : labelidx, `t*` : valtype*}: - `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 - rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} - -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 - rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) - -- Heaptype_ok: `%|-%:OK`(C, ht) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 - rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 - rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) - -- Reftype_ok: `%|-%:OK`(C, rt_1) - -- Reftype_ok: `%|-%:OK`(C, rt_2) - -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 - rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) - -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) - -- Reftype_ok: `%|-%:OK`(C, rt_1) - -- Reftype_ok: `%|-%:OK`(C, rt_2) - -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 - rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) - -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 - rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 - rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: - `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 - rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RETURN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 - rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) - -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 - rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 - rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_context: `%`(C) - -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 - rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 - rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(THROW_REF_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 - rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 - rule ref.null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) - -- Heaptype_ok: `%|-%:OK`(C, ht) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 - rule ref.func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) - -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) - -- if (x <- C.REFS_context) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 - rule ref.i31{C : context}: - `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 - rule ref.is_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) - -- Heaptype_ok: `%|-%:OK`(C, ht) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 - rule ref.as_non_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) - -- Heaptype_ok: `%|-%:OK`(C, ht) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 - rule ref.eq{C : context}: - `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 - rule ref.test{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.TEST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- Reftype_ok: `%|-%:OK`(C, rt) - -- Reftype_ok: `%|-%:OK`(C, rt') - -- Reftype_sub: `%|-%<:%`(C, rt, rt') - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 - rule ref.cast{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.CAST_instr(rt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- Reftype_ok: `%|-%:OK`(C, rt) - -- Reftype_ok: `%|-%:OK`(C, rt') - -- Reftype_sub: `%|-%<:%`(C, rt, rt') - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 - rule i31.get{C : context, sx : sx}: - `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: - `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 - rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) - -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) - -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: - `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 - rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: - `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) - -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) - -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 - rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array.set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 - rule array.len{C : context}: - `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.LEN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array.fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 - rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: - `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 - rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) - -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) - -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 - rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) - -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 - rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) - -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 - rule local.get{C : context, x : idx, t : valtype}: - `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) - -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 - rule local.set{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) - -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 - rule local.tee{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) - -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) - -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 - rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: - `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 - rule global.set{C : context, x : idx, t : valtype}: - `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 - rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 - rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 - rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 - rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: - `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 - rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 - rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) - -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) - -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 - rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: - `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt_2) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) - -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) - -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 - rule elem.drop{C : context, x : idx, rt : reftype}: - `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) - -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 - rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.SIZE_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 - rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.GROW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 - rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 - rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: - `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 - rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) - -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 - rule data.drop{C : context, x : idx}: - `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) - -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 - rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 - rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, M) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 - rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 - rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, M) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 - rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 - rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 - rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, N) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 - rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, N) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 - rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 - rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 - rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 - rule const{C : context, nt : numtype, c_nt : num_}: - `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 - rule unop{C : context, nt : numtype, unop_nt : unop_}: - `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 - rule binop{C : context, nt : numtype, binop_nt : binop_}: - `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 - rule testop{C : context, nt : numtype, testop_nt : testop_}: - `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 - rule relop{C : context, nt : numtype, relop_nt : relop_}: - `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 - rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: - `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 - rule vconst{C : context, c : vec_}: - `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 - rule vvunop{C : context, vvunop : vvunop}: - `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 - rule vvbinop{C : context, vvbinop : vvbinop}: - `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 - rule vvternop{C : context, vvternop : vvternop}: - `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 - rule vvtestop{C : context, vvtestop : vvtestop}: - `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 - rule vunop{C : context, sh : shape, vunop : vunop_}: - `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 - rule vbinop{C : context, sh : shape, vbinop : vbinop_}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 - rule vternop{C : context, sh : shape, vternop : vternop_}: - `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 - rule vtestop{C : context, sh : shape, vtestop : vtestop_}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 - rule vrelop{C : context, sh : shape, vrelop : vrelop_}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 - rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 - rule vbitmask{C : context, sh : ishape}: - `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 - rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: - `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 - rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: - `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 - rule vsplat{C : context, sh : shape}: - `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VSPLAT_instr(sh)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 - rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: - `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 - rule vreplace_lane{C : context, sh : shape, i : laneidx}: - `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 - rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: - `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 - rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: - `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 - rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: - `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 - rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: - `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 - rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: - `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 -relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 - rule empty{C : context}: - `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- wf_context: `%`(C) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 - rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: - `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(instr_1) - -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) - -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} - -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} - -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 - rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: - `%|-%:%`(C, instr*{instr <- `instr*`}, it') - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(it') - -- wf_instrtype: `%`(it) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) - -- Instrtype_sub: `%|-%<:%`(C, it, it') - -- Instrtype_ok: `%|-%:OK`(C, it') - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 - rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) -} - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Expr_ok: `%|-%:%`(context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule _{C : context, `instr*` : instr*, `t*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: - `|-%NONDEFAULTABLE`(t) - -- wf_valtype: `%`(t) - -- if ($default_(t) = ?()) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Instr_const: `%|-%CONST`(context, instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule const{C : context, nt : numtype, c_nt : num_}: - `%|-%CONST`(C, CONST_instr(nt, c_nt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(CONST_instr(nt, c_nt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule vconst{C : context, vt : vectype, c_vt : vec_}: - `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - -- wf_context: `%`(C) - -- wf_instr: `%`(VCONST_instr(vt, c_vt)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.null{C : context, ht : heaptype}: - `%|-%CONST`(C, REF.NULL_instr(ht)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.NULL_instr(ht)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.i31{C : context}: - `%|-%CONST`(C, REF.I31_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.I31_instr) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.func{C : context, x : idx}: - `%|-%CONST`(C, REF.FUNC_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(REF.FUNC_instr(x)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new_default{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_default{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_fixed{C : context, x : idx, n : n}: - `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_context: `%`(C) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule any.convert_extern{C : context}: - `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule extern.convert_any{C : context}: - `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) - -- wf_context: `%`(C) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule global.get{C : context, x : idx, t : valtype}: - `%|-%CONST`(C, GLOBAL.GET_instr(x)) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule binop{C : context, Inn : Inn, binop : binop_}: - `%|-%CONST`(C, BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr((Inn : addrtype <: numtype), binop)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn)) - -- wf_binop_: `%%`((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn)) - -- if (Inn <- [I32_Inn I64_Inn]) - -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Expr_const: `%|-%CONST`(context, expr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule _{C : context, `instr*` : instr*}: - `%|-%CONST`(C, instr*{instr <- `instr*`}) - -- wf_context: `%`(C) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule _{C : context, expr : expr, t : valtype}: - `%|-%:%CONST`(C, expr, t) - -- wf_context: `%`(C) - -- (wf_instr: `%`(expr))*{expr <- expr} - -- wf_valtype: `%`(t) - -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) - -- Expr_const: `%|-%CONST`(C, expr) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Type_ok: `%|-%:%`(context, type, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: - `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_oktypeidx: `%`(OK_oktypeidx(x)) - -- if ($proj_uN_0(x).0 = |C.TYPES_context|) - -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) - -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Tag_ok: `%|-%:%`(context, tag, tagtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, tagtype : tagtype}: - `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) - -- wf_context: `%`(C) - -- wf_tag: `%`(TAG_tag(tagtype)) - -- Tagtype_ok: `%|-%:OK`(C, tagtype) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Global_ok: `%|-%:%`(context, global, globaltype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: - `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) - -- wf_context: `%`(C) - -- wf_global: `%`(GLOBAL_global(globaltype, expr)) - -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) - -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Mem_ok: `%|-%:%`(context, mem, memtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, memtype : memtype}: - `%|-%:%`(C, MEMORY_mem(memtype), memtype) - -- wf_context: `%`(C) - -- wf_mem: `%`(MEMORY_mem(memtype)) - -- Memtype_ok: `%|-%:OK`(C, memtype) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Table_ok: `%|-%:%`(context, table, tabletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) - -- wf_context: `%`(C) - -- wf_table: `%`(TABLE_table(tabletype, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- if (tabletype = `%%%`_tabletype(at, lim, rt)) - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Local_ok: `%|-%:%`(context, local, localtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule set{C : context, t : valtype}: - `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- Defaultable: `|-%DEFAULTABLE`(t) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule unset{C : context, t : valtype}: - `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- wf_context: `%`(C) - -- wf_local: `%`(LOCAL_local(t)) - -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) - -- Nondefaultable: `|-%NONDEFAULTABLE`(t) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Func_ok: `%|-%:%`(context, func, deftype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: - `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) - -- wf_context: `%`(C) - -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) - -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) - -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} - -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Datamode_ok: `%|-%:%`(context, datamode, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule passive{C : context}: - `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(PASSIVE_datamode) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: - `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) - -- wf_context: `%`(C) - -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Data_ok: `%|-%:%`(context, data, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, `b*` : byte*, datamode : datamode}: - `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) - -- wf_context: `%`(C) - -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) - -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule passive{C : context, rt : reftype}: - `%|-%:%`(C, PASSIVE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(PASSIVE_elemmode) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule declare{C : context, rt : reftype}: - `%|-%:%`(C, DECLARE_elemmode, rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(DECLARE_elemmode) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: - `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) - -- wf_context: `%`(C) - -- wf_reftype: `%`(rt) - -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) - -- Reftype_sub: `%|-%<:%`(C, rt, rt') - -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Elem_ok: `%|-%:%`(context, elem, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: - `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) - -- wf_context: `%`(C) - -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) - -- Reftype_ok: `%|-%:OK`(C, elemtype) - -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} - -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Start_ok: `%|-%:OK`(context, start) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, x : idx}: - `%|-%:OK`(C, START_start(x)) - -- wf_context: `%`(C) - -- wf_start: `%`(START_start(x)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) - -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Import_ok: `%|-%:%`(context, import, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: - `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) - -- wf_context: `%`(C) - -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) - -- Externtype_ok: `%|-%:OK`(C, xt) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Externidx_ok: `%|-%:%`(context, externidx, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule tag{C : context, x : idx, jt : tagtype}: - `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TAG_externidx(x)) - -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule global{C : context, x : idx, gt : globaltype}: - `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(GLOBAL_externidx(x)) - -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mem{C : context, x : idx, mt : memtype}: - `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(MEM_externidx(x)) - -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) - -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule table{C : context, x : idx, tt : tabletype}: - `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) - -- wf_context: `%`(C) - -- wf_externidx: `%`(TABLE_externidx(x)) - -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) - -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) - -- wf_context: `%`(C) - -- wf_externidx: `%`(FUNC_externidx(x)) - -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) - -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Export_ok: `%|-%:%%`(context, export, name, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, name : name, externidx : externidx, xt : externtype}: - `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) - -- wf_context: `%`(C) - -- wf_externtype: `%`(xt) - -- wf_export: `%`(EXPORT_export(name, externidx)) - -- Externidx_ok: `%|-%:%`(C, externidx, xt) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 -relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 - rule empty{C : context}: - `%|-%:%`(C, [], []) - -- wf_context: `%`(C) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 - rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: - `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) - -- wf_context: `%`(C) - -- wf_global: `%`(global_1) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Global_ok: `%|-%:%`(C, global_1, gt_1) - -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) -} - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 -relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 - rule empty{C : context}: - `%|-%:%`(C, [], []) - -- wf_context: `%`(C) - - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 - rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: - `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) - -- wf_context: `%`(C) - -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) - -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) -} - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -syntax nonfuncs = - | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation wf_nonfuncs: `%`(nonfuncs) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}: - `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) - -- (wf_global: `%`(global))*{global <- `global*`} - -- (wf_mem: `%`(mem))*{mem <- `mem*`} - -- (wf_table: `%`(table))*{table <- `table*`} - -- (wf_elem: `%`(elem))*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) - -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -relation Module_ok: `|-%:%`(module, moduletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- wf_context: `%`(C) - -- wf_context: `%`(C') - -- (wf_name: `%`(nm))*{nm <- `nm*`} - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) - -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) - -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) - -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} - -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) - -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) - -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) - -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) - -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) - -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} - -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) - -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} - -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) - -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) - -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) - -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -syntax relaxed2 = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $proj_relaxed2_0(x : relaxed2) : (nat) - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -relation wf_relaxed2: `%`(relaxed2) - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - rule relaxed2_case_0{i : nat}: - `%`(`%`_relaxed2(i)) - -- if ((i = 0) \/ (i = 1)) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -syntax relaxed4 = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $proj_relaxed4_0(x : relaxed4) : (nat) - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -relation wf_relaxed4: `%`(relaxed4) - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - rule relaxed4_case_0{i : nat}: - `%`(`%`_relaxed4(i)) - -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_fmadd : relaxed2 - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_fmin : relaxed4 - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_fmax : relaxed4 - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_idot : relaxed2 - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_iq15mulr : relaxed2 - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_trunc_u : relaxed4 - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_trunc_s : relaxed2 - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_swizzle : relaxed2 - -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec -def $R_laneselect : relaxed2 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $s33_to_u32(s33 : s33) : u32 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ibits_(N : N, iN : iN) : bit* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fbits_(N : N, fN : fN) : bit* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ibytes_(N : N, iN : iN) : byte* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fbytes_(N : N, fN : fN) : byte* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $nbytes_(numtype : numtype, num_ : num_) : byte* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $vbytes_(vectype : vectype, vec_ : vec_) : byte* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_ibits_(N : N, bit*) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_fbits_(N : N, bit*) : fN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_ibytes_(N : N, byte*) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_fbytes_(N : N, byte*) : fN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_nbytes_(numtype : numtype, byte*) : num_ - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_vbytes_(vectype : vectype, byte*) : vec_ - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $signed_(N : N, nat : nat) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) - -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) - -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_signed_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) - -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $zero(lanetype : lanetype) : lane_ - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = mk_lane__2_lane_(Jnn, `%`_uN(0)) - -- wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, `%`_uN(0))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype))))) - -- wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, $fzero($size((Fnn : Fnn <: numtype)))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $bool(bool : bool) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $bool(false) = 0 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $bool(true) = 1 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $truncz(rat : rat) : int - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ceilz(rat : rat) : int - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sat_u_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sat_s_(N : N, int : int) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ineg_(N : N, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iabs_(N : N, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iclz_(N : N, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ictz_(N : N, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ipopcnt_(N : N, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) - -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iadd_(N : N, iN : iN, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $isub_(N : N, iN : iN, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) - -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $imul_(N : N, iN : iN, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) - -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() - -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 - -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 - -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 - -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 - -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) - -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inot_(N : N, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irev_(N : N, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iand_(N : N, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iandnot_(N : N, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ior_(N : N, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ixor_(N : N, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ishl_(N : N, iN : iN, u32 : u32) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irotl_(N : N, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irotr_(N : N, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ieqz_(N : N, iN : iN) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inez_(N : N, iN : iN) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ieq_(N : N, iN : iN, iN : iN) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ine_(N : N, iN : iN, iN : iN) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) - -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) - -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fabs_(N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fneg_(N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fsqrt_(N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fceil_(N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ffloor_(N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ftrunc_(N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fnearest_(N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fadd_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fsub_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fmul_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fdiv_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fmin_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fmax_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fpmin_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fpmax_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fcopysign_(N : N, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $feq_(N : N, fN : fN, fN : fN) : u32 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fne_(N : N, fN : fN, fN : fN) : u32 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $flt_(N : N, fN : fN, fN : fN) : u32 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fgt_(N : N, fN : fN, fN : fN) : u32 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fle_(N : N, fN : fN, fN : fN) : u32 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fge_(N : N, fN : fN, fN : fN) : u32 - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wrap__(M : M, N : N, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extend__(M : M, N : N, sx : sx, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $demote__(M : M, N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $promote__(M : M, N : N, fN : fN) : fN* - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $convert__(M : M, N : N, sx : sx, iN : iN) : fN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), c) = mk_lane__0_lane_(numtype, c) - -- wf_lane_: `%%`((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lane_: `%%`((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)) - -- wf_lit_: `%%`((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{numtype : numtype, c : num_}((numtype : numtype <: lanetype), mk_lane__0_lane_(numtype, c)) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: lanetype), mk_lane__1_lane_(packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)) - -- wf_num_: `%%`($lunpack((packtype : packtype <: lanetype)), mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{consttype : consttype, c : lit_}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{packtype : packtype, c : uN}((packtype : packtype <: storagetype), mk_lit__2_lit_(packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c))) - -- wf_lit_: `%%`((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CLZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iclz_($sizenn((Inn : addrtype <: numtype)), i))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, CTZ_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ictz_($sizenn((Inn : addrtype <: numtype)), i))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, POPCNT_unop_Inn), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ipopcnt_($sizenn((Inn : addrtype <: numtype)), i))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : addrtype, M : nat, i : uN}((Inn : addrtype <: numtype), mk_unop__0_unop_(Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(Inn, i)) = [mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iextend_($sizenn((Inn : addrtype <: numtype)), M, S_sx, i))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, ABS_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn((Fnn : Fnn <: numtype)), f)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEG_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn((Fnn : Fnn <: numtype)), f)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, SQRT_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, CEIL_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn((Fnn : Fnn <: numtype)), f)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, FLOOR_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, TRUNC_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Fnn : Fnn, f : fN}((Fnn : Fnn <: numtype), mk_unop__1_unop_(Fnn, NEAREST_unop_Fnn), mk_num__1_num_(Fnn, f)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)} - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ADD_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iadd_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SUB_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $isub_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, MUL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $imul_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, DIV_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, REM_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = mk_num__0_num_(Inn, iter_0)*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - -- (wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2))} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, AND_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $iand_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, OR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ior_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, XOR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ixor_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishl_($sizenn((Inn : addrtype <: numtype)), i_1, `%`_u32($proj_uN_0(i_2).0)))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, SHR_binop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $ishr_($sizenn((Inn : addrtype <: numtype)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTL_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotl_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_binop__0_binop_(Inn, ROTR_binop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = [mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))] - -- wf_num_: `%%`((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $irotr_($sizenn((Inn : addrtype <: numtype)), i_1, i_2))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, ADD_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, SUB_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MUL_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, DIV_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MIN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, MAX_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_binop__1_binop_(Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = mk_num__1_num_(Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -- (wf_num_: `%%`((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)} - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $testop_{Inn : addrtype, i : uN}((Inn : addrtype <: numtype), mk_testop__0_testop_(Inn, EQZ_testop_Inn), mk_num__0_num_(Inn, i)) = $ieqz_($sizenn((Inn : addrtype <: numtype)), i) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, EQ_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ieq_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, NE_relop_Inn), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ine_($sizenn((Inn : addrtype <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ilt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GT_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $igt_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, LE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ile_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : addrtype, sx : sx, i_1 : uN, i_2 : uN}((Inn : addrtype <: numtype), mk_relop__0_relop_(Inn, GE_relop_Inn(sx)), mk_num__0_num_(Inn, i_1), mk_num__0_num_(Inn, i_2)) = $ige_($sizenn((Inn : addrtype <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, EQ_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, NE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GT_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, LE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Fnn : Fnn, f_1 : fN, f_2 : fN}((Fnn : Fnn <: numtype), mk_relop__1_relop_(Fnn, GE_relop_Fnn), mk_num__1_num_(Fnn, f_1), mk_num__1_num_(Fnn, f_2)) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $extend__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, i_1))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Inn_2 : addrtype, i_1 : uN}((Inn_1 : addrtype <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___0_cvtop__(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(Inn_1, i_1)) = [mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))] - -- wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, $wrap__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), i_1))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, sx : sx, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(Fnn_1, f_1)) = mk_num__0_num_(Inn_2, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - -- (wf_num_: `%%`((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : addrtype <: numtype)), sx, f_1))} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, sx : sx, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(Inn_1, i_1)) = [mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))] - -- wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, $convert__($sizenn1((Inn_1 : addrtype <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(Fnn_1, f_1)) = mk_num__1_num_(Fnn_2, iter_0)*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - -- (wf_num_: `%%`((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, iter_0)))*{iter_0 <- $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)} - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : addrtype, Fnn_2 : Fnn, i_1 : uN}((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_cvtop___1_cvtop__(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(Inn_1, i_1)) = [$reinterpret__((Inn_1 : addrtype <: numtype), (Fnn_2 : Fnn <: numtype), mk_num__0_num_(Inn_1, i_1))] - -- wf_num_: `%%`((Inn_1 : addrtype <: numtype), mk_num__0_num_(Inn_1, i_1)) - -- if ($size((Inn_1 : addrtype <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : addrtype, f_1 : fN}((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_cvtop___2_cvtop__(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(Fnn_1, f_1)) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : addrtype <: numtype), mk_num__1_num_(Fnn_1, f_1))] - -- wf_num_: `%%`((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, f_1)) - -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : addrtype <: numtype))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lanes_(shape : shape, vec_ : vec_) : lane_* - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $inv_lanes_(shape : shape, lane_*) : vec_ - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $half(half : half, nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $half{i : nat, j : nat}(LOW_half, i, j) = i - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $half{i : nat, j : nat}(HIGH_half, i, j) = j - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $iswizzle_lane_(N : N, iN*, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) - -- wf_uN: `%%`(N, `%`_uN(0)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) - -- wf_uN: `%%`(N, `%`_uN(0)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`})] - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{Fnn : Fnn, M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) - -- wf_shape: `%`(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) - -- if ($isize(Inn) = $fsize(Fnn)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{Jnn : Jnn, M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{Jnn : Jnn, M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{Jnn : Jnn, M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- wf_uN: `%%`(32, c) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} - -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{Jnn : Jnn, M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{Jnn : Jnn, M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : nat, v : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vunop__1_vunop_(Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : nat, v : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vunop__0_vunop_(Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vbinop__0_vbinop_(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vbinop__1_vbinop_(Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vternop__0_vternop_(Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vternop__1_vternop_(Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vrelop__0_vrelop_(Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), mk_vrelop__1_vrelop_(Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} - -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vshiftop__0_vshiftop_(Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{Jnn : Jnn, M : nat, v : uN}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) - -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- wf_uN: `%%`(128, v) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivadd_pairwise_(N : N, iN*) : iN* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} - -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivdot_(N : N, iN*, iN*) : iN* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivdot_sat_(N : N, iN*, iN*) : iN* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} - -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} - -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} - -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c)*{c <- `c*`}) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_1))*{c'_1 <- `c'_1*`} - -- (wf_uN: `%%`($lsize((Jnn_2 : Jnn <: lanetype)), c'_2))*{c'_2 <- `c'_2*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivmul_(N : N, iN*, iN*) : iN* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) - -- wf_uN: `%%`(8, `%`_uN(M_2)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) - -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_uN: `%%`(8, `%`_uN(0)) - -- wf_uN: `%%`(8, `%`_uN(M_1)) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c - -- wf_uN: `%%`(128, c) - -- wf_uN: `%%`(128, c') - -- wf_uN: `%%`(128, c'') - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) - -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - -- wf_ishape: `%`(`%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) - -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) - -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) - -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax num = - | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_num: `%`(num) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule num_case_0{numtype : numtype, num_ : num_}: - `%`(CONST_num(numtype, num_)) - -- wf_num_: `%%`(numtype, num_) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax vec = - | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_vec: `%`(vec) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule vec_case_0{vectype : vectype, vec_ : vec_}: - `%`(VCONST_vec(vectype, vec_)) - -- wf_uN: `%%`($vsize(vectype), vec_) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax ref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_ref: `%`(ref) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule ref_case_0{u31 : u31}: - `%`(REF.I31_NUM_ref(u31)) - -- wf_uN: `%%`(31, u31) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule ref_case_1{structaddr : structaddr}: - `%`(REF.STRUCT_ADDR_ref(structaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule ref_case_2{arrayaddr : arrayaddr}: - `%`(REF.ARRAY_ADDR_ref(arrayaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule ref_case_3{funcaddr : funcaddr}: - `%`(REF.FUNC_ADDR_ref(funcaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule ref_case_4{exnaddr : exnaddr}: - `%`(REF.EXN_ADDR_ref(exnaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule ref_case_5{hostaddr : hostaddr}: - `%`(REF.HOST_ADDR_ref(hostaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule ref_case_6{addrref : addrref}: - `%`(REF.EXTERN_ref(addrref)) - -- wf_addrref: `%`(addrref) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule ref_case_7{heaptype : heaptype}: - `%`(REF.NULL_ref(heaptype)) - -- wf_heaptype: `%`(heaptype) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax result = - | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) - | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) - | TRAP - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_result: `%`(result) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule result_case_0{`val*` : val*}: - `%`(_VALS_result(val*{val <- `val*`})) - -- (wf_val: `%`(val))*{val <- `val*`} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule result_case_1{exnaddr : exnaddr}: - `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule result_case_2: - `%`(TRAP_result) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax hostfunc = - | `...` - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funccode = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | `...` - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_funccode: `%`(funccode) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_funccode(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule funccode_case_1: - `%`(`...`_funccode) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax taginst = -{ - TYPE{tagtype : tagtype} tagtype -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_taginst: `%`(taginst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule taginst_case_{var_0 : tagtype}: - `%`({TYPE var_0}) - -- wf_typeuse: `%`(var_0) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax globalinst = -{ - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_globalinst: `%`(globalinst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule globalinst_case_{var_0 : globaltype, var_1 : val}: - `%`({TYPE var_0, VALUE var_1}) - -- wf_globaltype: `%`(var_0) - -- wf_val: `%`(var_1) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax meminst = -{ - TYPE{memtype : memtype} memtype, - BYTES{`byte*` : byte*} byte* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_meminst: `%`(meminst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule meminst_case_{var_0 : memtype, var_1 : byte*}: - `%`({TYPE var_0, BYTES var_1}) - -- wf_memtype: `%`(var_0) - -- (wf_byte: `%`(var_1))*{var_1 <- var_1} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax tableinst = -{ - TYPE{tabletype : tabletype} tabletype, - REFS{`ref*` : ref*} ref* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_tableinst: `%`(tableinst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: - `%`({TYPE var_0, REFS var_1}) - -- wf_tabletype: `%`(var_0) - -- (wf_ref: `%`(var_1))*{var_1 <- var_1} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funcinst = -{ - TYPE{deftype : deftype} deftype, - MODULE{moduleinst : moduleinst} moduleinst, - CODE{funccode : funccode} funccode -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_funcinst: `%`(funcinst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: - `%`({TYPE var_0, MODULE var_1, CODE var_2}) - -- wf_moduleinst: `%`(var_1) - -- wf_funccode: `%`(var_2) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax datainst = -{ - BYTES{`byte*` : byte*} byte* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_datainst: `%`(datainst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule datainst_case_{var_0 : byte*}: - `%`({BYTES var_0}) - -- (wf_byte: `%`(var_0))*{var_0 <- var_0} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax eleminst = -{ - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_eleminst: `%`(eleminst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: - `%`({TYPE var_0, REFS var_1}) - -- wf_reftype: `%`(var_0) - -- (wf_ref: `%`(var_1))*{var_1 <- var_1} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax packval = - | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_packval: `%`(packval) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule packval_case_0{packtype : packtype, iN : iN}: - `%`(PACK_packval(packtype, iN)) - -- wf_uN: `%%`($psize(packtype), iN) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax fieldval = - | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) - | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_fieldval: `%`(fieldval) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_0{numtype : numtype, num_ : num_}: - `%`(CONST_fieldval(numtype, num_)) - -- wf_num_: `%%`(numtype, num_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_1{vectype : vectype, vec_ : vec_}: - `%`(VCONST_fieldval(vectype, vec_)) - -- wf_uN: `%%`($vsize(vectype), vec_) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_2{heaptype : heaptype}: - `%`(REF.NULL_fieldval(heaptype)) - -- wf_heaptype: `%`(heaptype) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_3{u31 : u31}: - `%`(REF.I31_NUM_fieldval(u31)) - -- wf_uN: `%%`(31, u31) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_4{structaddr : structaddr}: - `%`(REF.STRUCT_ADDR_fieldval(structaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_5{arrayaddr : arrayaddr}: - `%`(REF.ARRAY_ADDR_fieldval(arrayaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_6{funcaddr : funcaddr}: - `%`(REF.FUNC_ADDR_fieldval(funcaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_7{exnaddr : exnaddr}: - `%`(REF.EXN_ADDR_fieldval(exnaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_8{hostaddr : hostaddr}: - `%`(REF.HOST_ADDR_fieldval(hostaddr)) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_9{addrref : addrref}: - `%`(REF.EXTERN_fieldval(addrref)) - -- wf_addrref: `%`(addrref) - - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule fieldval_case_10{packtype : packtype, iN : iN}: - `%`(PACK_fieldval(packtype, iN)) - -- wf_uN: `%%`($psize(packtype), iN) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structinst = -{ - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_structinst: `%`(structinst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: - `%`({TYPE var_0, FIELDS var_1}) - -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax arrayinst = -{ - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_arrayinst: `%`(arrayinst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: - `%`({TYPE var_0, FIELDS var_1}) - -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exninst = -{ - TAG{tagaddr : tagaddr} tagaddr, - FIELDS{`val*` : val*} val* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_exninst: `%`(exninst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule exninst_case_{var_0 : tagaddr, var_1 : val*}: - `%`({TAG var_0, FIELDS var_1}) - -- (wf_val: `%`(var_1))*{var_1 <- var_1} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax store = -{ - TAGS{`taginst*` : taginst*} taginst*, - GLOBALS{`globalinst*` : globalinst*} globalinst*, - MEMS{`meminst*` : meminst*} meminst*, - TABLES{`tableinst*` : tableinst*} tableinst*, - FUNCS{`funcinst*` : funcinst*} funcinst*, - DATAS{`datainst*` : datainst*} datainst*, - ELEMS{`eleminst*` : eleminst*} eleminst*, - STRUCTS{`structinst*` : structinst*} structinst*, - ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, - EXNS{`exninst*` : exninst*} exninst* -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_store: `%`(store) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: - `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) - -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} - -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} - -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} - -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} - -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} - -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} - -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} - -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} - -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} - -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax state = - | `%;%`{store : store, frame : frame}(store : store, frame : frame) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_state: `%`(state) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule state_case_0{store : store, frame : frame}: - `%`(`%;%`_state(store, frame)) - -- wf_store: `%`(store) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax config = - | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -relation wf_config: `%`(config) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - rule config_case_0{state : state, `instr*` : instr*}: - `%`(`%;%`_config(state, instr*{instr <- `instr*`})) - -- wf_state: `%`(state) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $Ki : nat - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $Ki = 1024 - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) - -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) - -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 -def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 - def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 - def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 - def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 -def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 - def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 - def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 - def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 -def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 - def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 - def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 - def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 -def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 - def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 - def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 - def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 -def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 - def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 - def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 - def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -} - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $store(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $store{s : store, f : frame}(`%;%`_state(s, f)) = s - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $frame(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $tagaddr(state : state) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $moduleinst(state : state) : moduleinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $taginst(state : state) : taginst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $globalinst(state : state) : globalinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $meminst(state : state) : meminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $tableinst(state : state) : tableinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $funcinst(state : state) : funcinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $datainst(state : state) : datainst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $eleminst(state : state) : eleminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $structinst(state : state) : structinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $arrayinst(state : state) : arrayinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $exninst(state : state) : exninst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $type(state : state, typeidx : typeidx) : deftype - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $type{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $tag(state : state, tagidx : tagidx) : taginst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tag{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $global(state : state, globalidx : globalidx) : globalinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $global{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $mem(state : state, memidx : memidx) : meminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $mem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $table(state : state, tableidx : tableidx) : tableinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $table{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $func(state : state, funcidx : funcidx) : funcinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $func{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $data(state : state, dataidx : dataidx) : datainst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $data{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $elem(state : state, tableidx : tableidx) : eleminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $elem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $local(state : state, localidx : localidx) : val? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.LOCALS_frame[$proj_uN_0(x).0] - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_local(state : state, localidx : localidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) - -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_global(state : state, globalidx : globalidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) - -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) - -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) - -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_elem(state : state, elemidx : elemidx, ref*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) - -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_data(state : state, dataidx : dataidx, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) - -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_structinst(state : state, structinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) - -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_arrayinst(state : state, arrayinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) - -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_exninst(state : state, exninst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) - -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') - -- wf_tableinst: `%`(tableinst') - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) - -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growmem(meminst : meminst, nat : nat) : meminst? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') - -- wf_meminst: `%`(meminst') - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) - -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() - -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -relation Num_ok: `%|-%:%`(store, num, numtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{s : store, nt : numtype, c : num_}: - `%|-%:%`(s, CONST_num(nt, c), nt) - -- wf_store: `%`(s) - -- wf_num: `%`(CONST_num(nt, c)) - -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -relation Vec_ok: `%|-%:%`(store, vec, vectype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{s : store, vt : vectype, c : vec_}: - `%|-%:%`(s, VCONST_vec(vt, c), vt) - -- wf_store: `%`(s) - -- wf_vec: `%`(VCONST_vec(vt, c)) - -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 -relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 - rule null{s : store, ht : heaptype, ht' : heaptype}: - `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 - rule i31{s : store, i : u31}: - `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.I31_NUM_ref(i)) - -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 - rule struct{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.STRUCTS_store|) - -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 - rule array{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.ARRAYS_store|) - -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 - rule func{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.FUNCS_store|) - -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 - rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) - -- wf_store: `%`(s) - -- wf_exninst: `%`(exn) - -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) - -- if (s.EXNS_store[a] = exn) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 - rule host{s : store, a : addr}: - `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 - rule extern{s : store, addrref : addrref}: - `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(REF.EXTERN_ref(addrref)) - -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) - -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 - rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: - `%|-%:%`(s, ref, rt) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- wf_reftype: `%`(rt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) -} - -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -relation Val_ok: `%|-%:%`(store, val, valtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule num{s : store, num : num, nt : numtype}: - `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) - -- wf_store: `%`(s) - -- wf_num: `%`(num) - -- Num_ok: `%|-%:%`(s, num, nt) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule vec{s : store, vec : vec, vt : vectype}: - `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) - -- wf_store: `%`(s) - -- wf_vec: `%`(vec) - -- Vec_ok: `%|-%:%`(s, vec, vt) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule ref{s : store, ref : ref, rt : reftype}: - `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) - -- wf_store: `%`(s) - -- wf_ref: `%`(ref) - -- wf_reftype: `%`(rt) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 -relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 - rule tag{s : store, a : addr, taginst : taginst}: - `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) - -- if (s.TAGS_store[a] = taginst) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 - rule global{s : store, a : addr, globalinst : globalinst}: - `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) - -- if (s.GLOBALS_store[a] = globalinst) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 - rule mem{s : store, a : addr, meminst : meminst}: - `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) - -- if (s.MEMS_store[a] = meminst) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 - rule table{s : store, a : addr, tableinst : tableinst}: - `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) - -- wf_store: `%`(s) - -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) - -- if (s.TABLES_store[a] = tableinst) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 - rule func{s : store, a : addr, funcinst : funcinst}: - `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- wf_store: `%`(s) - -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- if (a < |s.FUNCS_store|) - -- if (s.FUNCS_store[a] = funcinst) - - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 - rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: - `%|-%:%`(s, externaddr, xt) - -- wf_store: `%`(s) - -- wf_externtype: `%`(xt) - -- wf_externtype: `%`(xt') - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') - -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) -} - -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-true`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure: `%~>%`(instr*, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule unreachable: - `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - -- wf_instr: `%`(UNREACHABLE_instr) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule nop: - `%~>%`([NOP_instr], []) - -- wf_instr: `%`(NOP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule drop{val : val}: - `%~>%`([(val : val <: instr) DROP_instr], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(DROP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: - `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: - `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) - -- wf_val: `%`(val_1) - -- wf_val: `%`(val_2) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: - `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: - `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) - -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- if ($proj_uN_0(l).0 = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - -- if ($proj_uN_0(l).0 > 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_if-true`{c : num_, l : labelidx}: - `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_if-false`{c : num_, l : labelidx}: - `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: - `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: - `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) - -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: - `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: - `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: - `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: - `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule call_indirect{x : idx, yy : typeuse}: - `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) - -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(CALL_REF_instr(yy)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule return_call_indirect{x : idx, yy : typeuse}: - `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) - -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) - -- wf_instr: `%`(TABLE.GET_instr(x)) - -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype)))) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `frame-vals`{n : n, f : frame, `val*` : val*}: - `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(RETURN_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: - `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: - `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -- wf_instr: `%`(TRAP_instr) - -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `trap-label`{n : n, `instr'*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `trap-frame`{n : n, f : frame}: - `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.tee{val : val, x : idx}: - `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(LOCAL.TEE_instr(x)) - -- wf_instr: `%`(LOCAL.SET_instr(x)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.i31{i : num_}: - `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(REF.I31_instr) - -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `i31.get-num`{i : u31, sx : sx}: - `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) - -- wf_instr: `%`(REF.I31_NUM_instr(i)) - -- wf_instr: `%`(I31.GET_instr(sx)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new{val : val, n : n, x : idx}: - `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) - -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) - -- wf_instr: `%`(REF.NULL_instr(ht)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) - -- wf_instr: `%`(REF.EXTERN_instr(addrref)) - -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: - `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) - -- if (c <- $unop_(nt, unop, c_1)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: - `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(UNOP_instr(nt, unop)) - -- wf_instr: `%`(TRAP_instr) - -- if ($unop_(nt, unop, c_1) = []) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) - -- if (c <- $binop_(nt, binop, c_1, c_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(BINOP_instr(nt, binop)) - -- wf_instr: `%`(TRAP_instr) - -- if ($binop_(nt, binop, c_1, c_2) = []) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: - `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(TESTOP_instr(nt, testop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(CONST_instr(nt, c_1)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_instr: `%`(RELOP_instr(nt, relop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: - `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) - -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: - `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) - -- wf_instr: `%`(CONST_instr(nt_1, c_1)) - -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) - -- wf_instr: `%`(TRAP_instr) - -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) - -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) - -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) - -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvtestop{c_1 : vec_, c : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) - -- if (c <- $vunop_(sh, vunop, c_1)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VUNOP_instr(sh, vunop)) - -- wf_instr: `%`(TRAP_instr) - -- if ($vunop_(sh, vunop, c_1) = []) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) - -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) - -- wf_instr: `%`(TRAP_instr) - -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) - -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) - -- wf_instr: `%`(TRAP_instr) - -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), i))*{i <- `i*`} - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) - -- if ($proj_num__0(c) =/= ?()) - -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) - -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VBITMASK_instr(sh)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: - `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) - -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)) - -- wf_instr: `%`(CONST_instr(nt, c_2)) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) - -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) - -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) - -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) - -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) - -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) - -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) - -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) - -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -def $blocktype_(state : state, blocktype : blocktype) : instrtype - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_br_on_cast-fail`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_throw_ref-handler-next`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-le`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-le`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_ref.test-false`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_ref.cast-fail`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.copy-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.copy-le`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_data-zero`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_data-num`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read: `%~>%`(config, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) - -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) - -- if ($funcinst(z)[a] = fi) - -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule return_call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) - -- wf_instr: `%`(CALL_REF_instr(yy)) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) - -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) - -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(THROW_REF_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) - -- wf_instr: `%`(BR_instr(l)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) - -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) - -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) - -- if ($local(z, x) = ?(val)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule global.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) - -- if ($global(z, x).VALUE_globalinst = val) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if (|$table(z, x).REFS_tableinst| = n) - -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) - -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) - -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) - -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) - -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) - -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- wf_uN: `%%`(N, j) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- if (c = $extend__(N, 128, U_sx, j)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: - `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))]) - -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n)))) - -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) - -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) - -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.null-idx`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) - -- wf_instr: `%`(REF.NULL_instr(($type(z, x) : deftype <: heaptype))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.func{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) - -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) - -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- wf_reftype: `%`(rt') - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - -- wf_instr: `%`(TRAP_instr) - -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- (wf_val: `%`(val))*{val <- `val*`} - -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) : val <: instr)]) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- wf_val: `%`(val) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($default_($unpack(zt)) = ?(val)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (wf_ref: `%`(ref))*{ref <- `ref*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) - -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} - -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} - -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) - -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) : val <: instr)]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.len-array`{z : state, a : addr}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) - -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- wf_ref: `%`(ref) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- wf_lit_: `%%`(zt, c) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) - -- wf_instr: `%`(CONST_instr(I32_numtype, i)) - -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 -relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 - rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 - rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 - rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 - rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 - rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 - rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) - -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if (a = |$exninst(z)|) - -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 - rule local.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 - rule global.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - -- wf_config: `%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 - rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 - rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 - rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) - -- if (ti = !($growtable($table(z, x), n, ref))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 - rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 - rule elem.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 - rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 - rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 - rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) - -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 - rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 - rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 - rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 - rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) - -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 - rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) - -- if (mi = !($growmem($mem(z, x), n))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 - rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))))])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 - rule data.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 - rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 - rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 - rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 - rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 - rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 - rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- if ($proj_num__0(i) =/= ?()) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -} - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 -relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 - rule refl{z : state, `instr*` : instr*}: - `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 - rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: - `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -} - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: - `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) - -- wf_config: `%`(`%;%`_config(z', (val : val <: instr)*{val <- `val*`})) - -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) - -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) - -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_taginst: `%`({TYPE tagtype}) - -- if (taginst = {TYPE tagtype}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) - -- if (globalinst = {TYPE globaltype, VALUE val}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 - def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) - -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) - -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) - -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} - -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- wf_store: `%`(s_7) - -- wf_moduleinst: `%`(moduleinst) - -- wf_store: `%`(s_1) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_3) - -- wf_store: `%`(s_4) - -- wf_store: `%`(s_5) - -- wf_store: `%`(s_6) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} - -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) - -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) - -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) - -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) - -- wf_instr: `%`(DATA.DROP_instr(x)) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - -- wf_instr: `%`(ELEM.DROP_instr(x)) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) - -- wf_instr: `%`(TABLE.INIT_instr(y, x)) - -- wf_instr: `%`(ELEM.DROP_instr(x)) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- wf_state: `%`(z') - -- wf_val: `%`(val) - -- (wf_val: `%`(val'))*{val' <- `val'*`} - -- wf_state: `%`(`%;%`_state(s, f)) - -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) - -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) -} - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- wf_state: `%`(z) - -- wf_state: `%`(z') - -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} - -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} - -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} - -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) - -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} - -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} - -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} - -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} - -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} - -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} - -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} - -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) - -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} - -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))])) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) - -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[$proj_uN_0(x).0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) - -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{rectype : rectype}: - `%`(TYPE_decl(rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{tagtype : tagtype}: - `%`(TAG_decl(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_decl(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{memtype : memtype}: - `%`(MEMORY_decl(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{tabletype : tabletype, expr : expr}: - `%`(TABLE_decl(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{`byte*` : byte*, datamode : datamode}: - `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{funcidx : funcidx}: - `%`(START_decl(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{name : name, externidx : externidx}: - `%`(EXPORT_decl(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{n : n, `instr*` : instr*}: - `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{n : n, frame : frame}: - `%`(`FRAME_%{%}`_callframe(n, frame)) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/07-sub-expansion.il b/spectec/test-middlend/specification.exp/07-sub-expansion.il new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spectec/test-middlend/specification.exp/06-uncase-removal.il b/spectec/test-middlend/specification.exp/08-uncase-removal.il similarity index 67% rename from spectec/test-middlend/specification.exp/06-uncase-removal.il rename to spectec/test-middlend/specification.exp/08-uncase-removal.il index 275298b320..6a3c596026 100644 --- a/spectec/test-middlend/specification.exp/06-uncase-removal.il +++ b/spectec/test-middlend/specification.exp/08-uncase-removal.il @@ -42,11 +42,12 @@ def $prod(nat*) : nat } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $opt_(syntax X, X*) : X? +def $opt_(syntax X, X*) : X?? ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() + def $opt_{syntax X}(syntax X, []) = ?(?()) ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec rec { @@ -199,11 +200,6 @@ relation wf_uN: `%%`(N, uN) syntax sN = | `%`{i : int}(i : int) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_sN_0(x : sN) : (int) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_sN: `%%`(N, sN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -242,28 +238,30 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = $signif(N) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = $expon(N) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -340,7 +338,7 @@ def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -362,11 +360,6 @@ def $proj_list_0(syntax X, x : list(syntax X)) : (X*) syntax char = | `%`{i : nat}(i : nat) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_char_0(x : char) : (nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_char: `%`(char) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -374,57 +367,13 @@ relation wf_char: `%`(char) `%`(`%`_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = | `%`{`char*` : char*}(char*{char <- `char*`} : char*) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_name_0(x : name) : (char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -685,6 +634,9 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1249,29 +1201,32 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = I32_Inn + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = F32_Fnn + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = I8_Jnn + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = I16_Jnn + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = I32_Jnn + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = I64_Jnn + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1304,13 +1259,14 @@ def $lsize(lanetype : lanetype) : nat def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) + def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = ?($size(numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) + def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = ?($vsize(vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) + def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = ?($psize(packtype)) + def $zsize{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1342,7 +1298,9 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ?((!($inv_isize(n)) : addrtype <: Jnn)) + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) def $inv_jsize{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1401,7 +1359,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = ?(!($inv_jsize(n))) + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) def $inv_jsizenn{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1458,101 +1422,106 @@ def $diffrt(reftype : reftype, reftype : reftype) : reftype -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt + def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = ?(dt) + def $as_deftype{x0 : typeuse}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1573,82 +1542,82 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1761,11 +1730,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1774,40 +1743,40 @@ def $rollrt(typeidx : typeidx, rectype : rectype) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $rollrt{x : uN, rectype : rectype, `subtype*` : subtype*, `i*` : nat*, n : nat}(x, rectype) = REC_rectype(`%`_list($subst_subtype(subtype, _IDX_typevar(`%`_typeidx(($proj_uN_0(x).0 + i)))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1945,12 +1914,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -4505,7 +4474,7 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4867,51 +4836,55 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : uN, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5776,7 +5749,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5785,7 +5758,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5818,6 +5791,8 @@ def $default_(valtype : valtype) : val? -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -6090,7 +6065,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 @@ -7485,11 +7460,12 @@ def $inv_signed_(N : N, int : int) : nat -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx? +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() + def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) + def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_ @@ -8108,8 +8084,8 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8118,8 +8094,8 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* @@ -8129,9 +8105,9 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8141,9 +8117,9 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8152,9 +8128,9 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* @@ -8163,9 +8139,9 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -8174,10 +8150,10 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Jnn : Jnn <: lanetype), mk_lane__2_lane_(Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(Jnn, iter_0)*{iter_0 <- $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -8186,10 +8162,10 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((Fnn : Fnn <: lanetype), mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((Fnn : Fnn <: numtype), mk_num__1_num_(Fnn, iter_0))*{iter_0 <- $f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -8198,9 +8174,9 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -8209,9 +8185,9 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -8221,9 +8197,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8233,8 +8209,8 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -8243,8 +8219,8 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -8254,7 +8230,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8265,9 +8241,9 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -8277,9 +8253,9 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* @@ -8454,27 +8430,27 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lan ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Jnn_2 : Jnn, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__2_lane_(Jnn_2, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)) - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(Jnn_1, c_1)) = [mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))) - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Inn_2 : addrtype, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(Fnn_1, M_1, (Inn_2 : addrtype <: Jnn), M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = lift(mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn_2 : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Inn_2 : addrtype <: numtype), mk_num__0_num_(Inn_2, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : nat, Fnn_2 : Fnn, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_((Fnn_1 : Fnn <: numtype), mk_num__1_num_(Fnn_1, c_1))) = mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((Fnn_2 : Fnn <: numtype), mk_num__1_num_(Fnn_2, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -8486,8 +8462,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -8497,8 +8473,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -8508,8 +8484,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8553,11 +8529,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(Jnn_2, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(Jnn_2, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* @@ -8576,9 +8552,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ @@ -8614,11 +8590,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(Jnn_2, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* @@ -8661,9 +8637,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(Jnn_2, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -9061,20 +9037,22 @@ def $Ki : nat def $Ki = 1024 ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval +def $packfield_(storagetype : storagetype, val : val) : fieldval? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) + def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) + def $packfield_{packtype : packtype, i : uN}((packtype : packtype <: storagetype), CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) -- wf_fieldval: `%`(PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val + def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = ?(val) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i))) + def $unpackfield_{packtype : packtype, sx : sx, i : uN}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -9341,7 +9319,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} @@ -9354,7 +9332,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} @@ -9379,9 +9357,9 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- wf_store: `%`(s) @@ -9390,14 +9368,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.I31_NUM_ref(i)) -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9405,7 +9383,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9413,7 +9391,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) @@ -9421,7 +9399,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- wf_store: `%`(s) @@ -9430,14 +9408,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- wf_store: `%`(s) @@ -9446,7 +9424,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- wf_store: `%`(s) @@ -9485,44 +9463,44 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- wf_store: `%`(s) @@ -9537,74 +9515,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) @@ -9619,29 +9554,6 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -9760,11 +9672,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- if (val =/= REF.NULL_val(ht)) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: @@ -9775,12 +9687,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: @@ -9869,12 +9781,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= REF.NULL_ref(ht)) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.IS_NULL_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: @@ -9886,11 +9798,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + -- if (ref =/= REF.NULL_ref(ht)) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: @@ -9904,23 +9816,24 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: @@ -10340,22 +10253,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10381,37 +10278,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10421,22 +10287,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10446,22 +10296,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10487,37 +10321,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10527,22 +10330,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10575,22 +10362,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10649,7 +10420,7 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -10688,29 +10459,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -10720,7 +10468,7 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -10745,7 +10493,7 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -10994,20 +10742,21 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11017,15 +10766,17 @@ relation Step_read: `%~>%`(config, instr*) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -11035,12 +10786,14 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -11050,7 +10803,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11062,13 +10814,15 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -11076,7 +10830,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: @@ -11210,20 +10963,21 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -11235,13 +10989,15 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -11251,12 +11007,14 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -11266,7 +11024,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11278,13 +11035,15 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -11293,7 +11052,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: @@ -11358,7 +11116,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])) : val <: instr)]) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -11395,7 +11153,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: @@ -11405,7 +11163,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: @@ -11422,7 +11180,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])) : val <: instr)]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -11455,13 +11213,15 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -11469,7 +11229,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -11500,13 +11259,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -11519,9 +11282,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: @@ -11540,7 +11302,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11565,13 +11327,17 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -11581,7 +11347,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -11604,7 +11369,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -11615,20 +11380,20 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -11684,7 +11449,7 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) @@ -11817,10 +11582,10 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: @@ -11830,9 +11595,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -11842,9 +11607,9 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: @@ -11861,9 +11626,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -11907,8 +11672,8 @@ def $alloctypes(type*) : deftype* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) } @@ -11932,8 +11697,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11955,8 +11720,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -11978,8 +11743,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12001,8 +11766,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12024,8 +11789,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12047,8 +11812,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12070,8 +11835,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12119,27 +11884,27 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -12184,9 +11949,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -12213,21 +11978,21 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config @@ -12238,4162 +12003,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) - -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[$proj_uN_0(x).0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) - -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{rectype : rectype}: - `%`(TYPE_decl(rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{tagtype : tagtype}: - `%`(TAG_decl(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_decl(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{memtype : memtype}: - `%`(MEMORY_decl(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{tabletype : tabletype, expr : expr}: - `%`(TABLE_decl(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{`byte*` : byte*, datamode : datamode}: - `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{funcidx : funcidx}: - `%`(START_decl(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{name : name, externidx : externidx}: - `%`(EXPORT_decl(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{n : n, `instr*` : instr*}: - `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{n : n, frame : frame}: - `%`(`FRAME_%{%}`_callframe(n, frame)) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/08-sub-expansion.il b/spectec/test-middlend/specification.exp/09-sub-expansion.il similarity index 70% rename from spectec/test-middlend/specification.exp/08-sub-expansion.il rename to spectec/test-middlend/specification.exp/09-sub-expansion.il index 9962635317..6434e79090 100644 --- a/spectec/test-middlend/specification.exp/08-sub-expansion.il +++ b/spectec/test-middlend/specification.exp/09-sub-expansion.il @@ -42,11 +42,12 @@ def $prod(nat*) : nat } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $opt_(syntax X, X*) : X? +def $opt_(syntax X, X*) : X?? ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() + def $opt_{syntax X}(syntax X, []) = ?(?()) ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec rec { @@ -199,11 +200,6 @@ relation wf_uN: `%%`(N, uN) syntax sN = | `%`{i : int}(i : int) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_sN_0(x : sN) : (int) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_sN: `%%`(N, sN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -242,28 +238,30 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = $signif(N) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = $expon(N) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -340,7 +338,7 @@ def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -362,11 +360,6 @@ def $proj_list_0(syntax X, x : list(syntax X)) : (X*) syntax char = | `%`{i : nat}(i : nat) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_char_0(x : char) : (nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_char: `%`(char) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -374,57 +367,13 @@ relation wf_char: `%`(char) `%`(`%`_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = | `%`{`char*` : char*}(char*{char <- `char*`} : char*) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_name_0(x : name) : (char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -685,6 +634,9 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1249,29 +1201,32 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = I32_Inn + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = F32_Fnn + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = I8_Jnn + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = I16_Jnn + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = I32_Jnn + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = I64_Jnn + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1312,21 +1267,22 @@ def $lsize(lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I32_storagetype) = $size(I32_numtype) + def $zsize(I32_storagetype) = ?($size(I32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I64_storagetype) = $size(I64_numtype) + def $zsize(I64_storagetype) = ?($size(I64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F32_storagetype) = $size(F32_numtype) + def $zsize(F32_storagetype) = ?($size(F32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F64_storagetype) = $size(F64_numtype) + def $zsize(F64_storagetype) = ?($size(F64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(V128_storagetype) = $vsize(V128_vectype) + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I8_storagetype) = $psize(I8_packtype) + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I16_storagetype) = $psize(I16_packtype) + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1358,7 +1314,9 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ?((!($inv_isize(n)) : addrtype <: Jnn)) + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) def $inv_jsize{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1417,7 +1375,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = ?(!($inv_jsize(n))) + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) def $inv_jsizenn{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1525,101 +1489,106 @@ def $diffrt(reftype : reftype, reftype : reftype) : reftype -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = _DEF_deftype(rectype, n) + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt*{xt <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = (tv : typevar <: typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1640,106 +1609,106 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_typevar(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(I32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(I64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(F32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(F64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(V128_vectype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(I8_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(I16_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1852,11 +1821,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1865,43 +1834,40 @@ def $rollrt(typeidx : typeidx, rectype : rectype) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $rollrt{x : uN, rectype : rectype, `subtype*` : subtype*, `i*` : nat*, n : nat}(x, rectype) = REC_rectype(`%`_list($subst_subtype(subtype, _IDX_typevar(`%`_typeidx(($proj_uN_0(x).0 + i)))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -2103,12 +2069,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -4672,7 +4638,7 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -5034,51 +5000,55 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : uN, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5230,7 +5200,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- wf_context: `%`(C) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 @@ -5239,7 +5208,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) -- wf_context: `%`(C) -- wf_subtype: `%`(st) -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 @@ -5313,12 +5281,9 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5360,11 +5325,9 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- wf_comptype: `%`(comptype) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5408,7 +5371,6 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 @@ -5442,7 +5404,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5528,7 +5489,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 @@ -5537,17 +5497,14 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[$proj_uN_0(typeidx).0] : deftype <: heaptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 @@ -5648,7 +5605,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) -- wf_context: `%`(C) -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5697,8 +5653,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5716,7 +5670,6 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5820,8 +5773,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -5952,7 +5903,6 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5963,9 +5913,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5974,9 +5922,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5984,7 +5930,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -5992,7 +5937,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6017,6 +5961,8 @@ def $default_(valtype : valtype) : val? -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -6130,7 +6076,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(BR_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6140,7 +6085,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 @@ -6149,9 +6093,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6161,7 +6103,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6171,7 +6112,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 @@ -6181,7 +6121,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6195,7 +6134,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6209,7 +6147,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6219,7 +6156,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6231,10 +6167,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 @@ -6256,7 +6190,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6271,7 +6204,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6288,10 +6220,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6305,8 +6235,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 @@ -6344,9 +6273,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(REF.FUNC_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 @@ -6413,7 +6340,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6423,7 +6349,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6435,9 +6360,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6449,9 +6372,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 @@ -6461,7 +6382,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6471,7 +6391,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6482,7 +6401,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6492,9 +6410,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6504,10 +6420,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 @@ -6517,7 +6431,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6528,7 +6441,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 @@ -6545,7 +6457,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6556,9 +6467,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6569,9 +6478,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[$proj_uN_0(y).0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6581,10 +6488,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 @@ -6610,7 +6515,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6620,7 +6524,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6630,7 +6533,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.TEE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6640,7 +6542,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6650,7 +6551,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6660,7 +6560,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6670,7 +6569,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6680,7 +6578,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.SIZE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6690,7 +6587,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.GROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6700,7 +6596,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6711,9 +6606,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6725,9 +6618,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6738,7 +6629,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(ELEM.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 @@ -6748,7 +6638,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.SIZE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6758,7 +6647,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.GROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -6768,7 +6656,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6779,9 +6666,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 @@ -6791,9 +6676,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -6802,7 +6685,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(DATA.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 @@ -6812,7 +6694,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -6823,7 +6704,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : addrtype <: valtype)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -6834,7 +6714,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -6845,7 +6724,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : addrtype <: valtype)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -6856,7 +6734,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -6867,7 +6744,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) @@ -6878,7 +6754,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -6889,7 +6764,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -6900,7 +6774,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -6912,7 +6785,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -6923,7 +6795,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7143,13 +7014,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -7273,7 +7141,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_context: `%`(C) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7384,13 +7251,11 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- wf_context: `%`(C) -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7408,7 +7273,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_context: `%`(C) -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7444,7 +7308,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- wf_reftype: `%`(rt) -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) @@ -7468,7 +7331,6 @@ relation Start_ok: `%|-%:OK`(context, start) -- wf_context: `%`(C) -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7488,7 +7350,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TAG_externidx(x)) -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7497,7 +7358,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(GLOBAL_externidx(x)) -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7506,7 +7366,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(MEM_externidx(x)) -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7515,7 +7374,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TABLE_externidx(x)) -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7524,7 +7382,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) -- wf_externtype: `%`(FUNC_externtype((dt : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7614,24 +7471,15 @@ relation Module_ok: `|-%:%`(module, moduletype) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) @@ -7782,21 +7630,22 @@ def $inv_signed_(N : N, int : int) : nat -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx? +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I32_storagetype) = ?() + def $sx(I32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I64_storagetype) = ?() + def $sx(I64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(F32_storagetype) = ?() + def $sx(F32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(F64_storagetype) = ?() + def $sx(F64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(V128_storagetype) = ?() + def $sx(V128_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I8_storagetype) = ?(S_sx) + def $sx(I8_storagetype) = ?(?(S_sx)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I16_storagetype) = ?(S_sx) + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_ @@ -8841,29 +8690,29 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -8872,15 +8721,15 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* @@ -8890,36 +8739,36 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8929,36 +8778,36 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -8967,33 +8816,33 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* @@ -9002,17 +8851,17 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -9021,37 +8870,37 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((I32_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((I64_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((I8_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((I16_Jnn : Jnn <: lanetype), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -9060,19 +8909,19 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((F32_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`((F64_Fnn : Fnn <: lanetype), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -9081,33 +8930,33 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -9116,33 +8965,33 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -9152,9 +9001,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((F32_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F32_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M)), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) @@ -9162,9 +9011,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Inn : addrtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_((Inn : addrtype <: numtype), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn((F64_Fnn : Fnn <: numtype)), S_sx, `%`_iN($proj_uN_0($f_($sizenn((F64_Fnn : Fnn <: numtype)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F64_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9174,29 +9023,29 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -9205,29 +9054,29 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -9237,7 +9086,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I32_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) @@ -9245,7 +9094,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I64_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) @@ -9253,7 +9102,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I8_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) @@ -9261,7 +9110,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn((I16_Jnn : Jnn <: lanetype)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9272,36 +9121,36 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I32_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I64_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I8_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn((I16_Jnn : Jnn <: lanetype)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -9311,36 +9160,36 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* @@ -9770,291 +9619,291 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lan ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1)) + -- where c = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1)) + -- where c = $convert__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I32_Inn : addrtype <: numtype), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I32_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Inn : addrtype <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((I64_Inn : addrtype <: numtype), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((I64_Inn : addrtype <: lanetype)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((F32_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F32_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F32_Fnn : Fnn <: numtype), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F32_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((F64_Fnn : Fnn <: lanetype), `%`_dim(M_2))), mk_lane__0_lane_((F64_Fnn : Fnn <: numtype), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1((F64_Fnn : Fnn <: lanetype)), $lsizenn2((F64_Fnn : Fnn <: lanetype)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -10066,8 +9915,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -10077,8 +9926,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -10088,8 +9937,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -10160,11 +10009,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10174,11 +10023,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10188,11 +10037,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10202,11 +10051,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10216,11 +10065,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10230,11 +10079,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10244,11 +10093,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10258,11 +10107,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10272,11 +10121,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10286,11 +10135,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10300,11 +10149,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10314,11 +10163,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10328,11 +10177,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I32_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10342,11 +10191,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I64_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10356,11 +10205,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I8_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10370,11 +10219,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((I16_Jnn : Jnn <: lanetype)), $lsize((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* @@ -10393,9 +10242,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10403,9 +10252,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10413,9 +10262,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10423,9 +10272,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10433,9 +10282,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10443,9 +10292,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10453,9 +10302,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10463,9 +10312,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10473,9 +10322,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10483,9 +10332,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10493,9 +10342,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10503,9 +10352,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10513,9 +10362,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10523,9 +10372,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10533,9 +10382,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10543,9 +10392,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ @@ -10641,11 +10490,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10655,11 +10504,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10669,11 +10518,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10683,11 +10532,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I32_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I32_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10697,11 +10546,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10711,11 +10560,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10725,11 +10574,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10739,11 +10588,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I64_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I64_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10753,11 +10602,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10767,11 +10616,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10781,11 +10630,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10795,11 +10644,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I8_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I8_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10809,11 +10658,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I32_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10823,11 +10672,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I64_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10837,11 +10686,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I8_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10851,11 +10700,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((I16_Jnn : Jnn <: lanetype)), $lsizenn2((I16_Jnn : Jnn <: lanetype)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2((I16_Jnn : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* @@ -11168,9 +11017,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11185,9 +11034,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11202,9 +11051,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11219,9 +11068,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11236,9 +11085,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11253,9 +11102,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11270,9 +11119,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11287,9 +11136,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11304,9 +11153,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11321,9 +11170,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11338,9 +11187,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11355,9 +11204,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11372,9 +11221,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I32_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I32_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11389,9 +11238,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I64_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I64_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11406,9 +11255,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I8_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I8_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11423,9 +11272,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1((I16_Jnn : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape((I16_Jnn : Jnn <: lanetype), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -11823,176 +11672,178 @@ def $Ki : nat def $Ki = 1024 ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval +def $packfield_(storagetype : storagetype, val : val) : fieldval? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(BOT_storagetype, val) = (val : val <: fieldval) + def $packfield_{val : val}(BOT_storagetype, val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(null?{null <- `null?`}, heaptype), val) = (val : val <: fieldval) + def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(null?{null <- `null?`}, heaptype), val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(V128_storagetype, val) = (val : val <: fieldval) + def $packfield_{val : val}(V128_storagetype, val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(F64_storagetype, val) = (val : val <: fieldval) + def $packfield_{val : val}(F64_storagetype, val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(F32_storagetype, val) = (val : val <: fieldval) + def $packfield_{val : val}(F32_storagetype, val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(I64_storagetype, val) = (val : val <: fieldval) + def $packfield_{val : val}(I64_storagetype, val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(I32_storagetype, val) = (val : val <: fieldval) + def $packfield_{val : val}(I32_storagetype, val) = ?((val : val <: fieldval)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) + def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) + def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12259,7 +12110,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} @@ -12272,7 +12123,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} @@ -12297,9 +12148,9 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- wf_store: `%`(s) @@ -12308,58 +12159,54 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.I31_NUM_ref(i)) -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), (dt : deftype <: heaptype))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- wf_store: `%`(s) -- wf_exninst: `%`(exn) -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- wf_store: `%`(s) @@ -12368,7 +12215,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- wf_store: `%`(s) @@ -12407,49 +12254,44 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype((funcinst.TYPE_funcinst : deftype <: typeuse))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- wf_store: `%`(s) @@ -12464,74 +12306,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) @@ -12546,29 +12345,6 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12595,7 +12371,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12605,7 +12380,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12614,7 +12388,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12623,7 +12396,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12656,7 +12428,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12664,17 +12435,15 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: @@ -12682,7 +12451,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12695,11 +12463,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) + -- if (val =/= REF.NULL_val(ht)) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([(val : val <: instr) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: @@ -12710,12 +12478,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: @@ -12790,7 +12558,6 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(REF.I31_instr) -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) @@ -12805,12 +12572,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= REF.NULL_ref(ht)) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.IS_NULL_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([(ref : ref <: instr) REF.IS_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: @@ -12822,11 +12589,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + -- if (ref =/= REF.NULL_ref(ht)) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([(ref : ref <: instr) REF.AS_NON_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: @@ -12840,23 +12607,24 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: @@ -12912,7 +12680,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12930,7 +12697,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12948,7 +12714,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12958,7 +12723,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(RELOP_instr(nt, relop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12967,7 +12731,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12984,7 +12747,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12994,7 +12756,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13005,7 +12766,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13014,7 +12774,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13023,7 +12782,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13041,7 +12799,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13061,7 +12818,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13083,8 +12839,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)) - -- if ($proj_num__0(c) =/= ?()) - -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13103,7 +12857,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13112,7 +12865,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13150,7 +12902,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_lane_: `%%`($lanetype(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13160,9 +12911,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) -- wf_shape: `%`(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13275,8 +13023,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13286,8 +13032,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13298,24 +13042,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13325,8 +13051,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13343,43 +13067,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13389,26 +13076,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13418,24 +13085,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13445,8 +13094,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13463,43 +13110,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13509,26 +13119,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13561,26 +13151,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13590,8 +13160,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13599,8 +13167,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13617,8 +13183,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13626,8 +13190,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13642,16 +13204,14 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13665,8 +13225,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13674,8 +13232,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13685,7 +13241,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13693,34 +13248,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13732,16 +13259,13 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13760,16 +13284,13 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13825,11 +13346,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13846,7 +13365,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -13855,11 +13373,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13887,7 +13403,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13931,8 +13446,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13943,8 +13456,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13995,15 +13506,13 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0] : ref <: instr)]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: @@ -14019,49 +13528,46 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -14071,14 +13577,14 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14088,30 +13594,26 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14119,14 +13621,12 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14134,7 +13634,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14142,7 +13641,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14150,7 +13648,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : addrtype <: numtype), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(CONST_instr((Inn : addrtype <: numtype), mk_num__0_num_(Inn, $extend__(n, $size((Inn : addrtype <: numtype)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14158,7 +13655,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14166,7 +13662,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14174,7 +13669,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14184,7 +13678,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14203,7 +13695,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14214,7 +13705,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14223,7 +13713,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_uN: `%%`(N, j) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14232,7 +13721,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14242,7 +13730,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -14262,49 +13749,46 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), i_1)) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) @@ -14314,14 +13798,14 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr((at_1 : addrtype <: numtype), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14331,30 +13815,26 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr((at_2 : addrtype <: numtype), i_2)) -- wf_instr: `%`(CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr((at : addrtype <: numtype), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14363,7 +13843,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: @@ -14374,7 +13853,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) @@ -14419,7 +13897,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14430,10 +13907,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]) : val <: instr)]) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])) : val <: instr)]) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -14453,7 +13927,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14462,7 +13935,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14472,20 +13944,17 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: @@ -14498,16 +13967,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]) : val <: instr)]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])) : val <: instr)]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -14521,7 +13985,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) @@ -14536,21 +13999,20 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14558,7 +14020,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14577,8 +14038,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14586,22 +14045,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14614,15 +14073,12 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14637,7 +14093,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14650,8 +14106,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14659,21 +14113,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -14683,8 +14138,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14698,8 +14151,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14709,8 +14160,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14721,23 +14171,20 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -14792,9 +14239,8 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) @@ -14815,13 +14261,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) @@ -14831,7 +14275,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- wf_config: `%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 @@ -14851,13 +14294,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) @@ -14867,16 +14308,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : addrtype <: numtype), c) STORE_instr((Inn : addrtype <: numtype), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : addrtype <: numtype)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 @@ -14884,13 +14322,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) @@ -14900,17 +14336,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14921,7 +14353,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 @@ -14942,10 +14373,10 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: @@ -14955,10 +14386,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -14968,9 +14398,9 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: @@ -14983,16 +14413,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- if ($proj_num__0(i) =/= ?()) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -15036,8 +14463,8 @@ def $alloctypes(type*) : deftype* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) } @@ -15061,8 +14488,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15084,8 +14511,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15107,8 +14534,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15130,8 +14557,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15153,8 +14580,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15176,8 +14603,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15199,8 +14626,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15248,27 +14675,27 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -15313,9 +14740,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15342,21 +14769,21 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config @@ -15367,4163 +14794,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) - -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[$proj_uN_0(x).0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) - -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{rectype : rectype}: - `%`(TYPE_decl(rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{tagtype : tagtype}: - `%`(TAG_decl(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_decl(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{memtype : memtype}: - `%`(MEMORY_decl(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{tabletype : tabletype, expr : expr}: - `%`(TABLE_decl(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{`byte*` : byte*, datamode : datamode}: - `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{funcidx : funcidx}: - `%`(START_decl(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{name : name, externidx : externidx}: - `%`(EXPORT_decl(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'*{decl' <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{name : name, var_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, var_0, externtype)] ++ decl'*{decl' <- `decl'*`}) = [IMPORT_import(name, var_0, externtype)] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'*{decl' <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'*{decl' <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'*{decl' <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'*{decl' <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, local*{local <- `local*`}, expr)] ++ decl'*{decl' <- `decl'*`}) = [FUNC_func(typeidx, local*{local <- `local*`}, expr)] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(byte*{byte <- `byte*`}, datamode)] ++ decl'*{decl' <- `decl'*`}) = [DATA_data(byte*{byte <- `byte*`}, datamode)] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)] ++ decl'*{decl' <- `decl'*`}) = [ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'*{decl' <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'*{decl' <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{name : name, var_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [IMPORT_decl(name, var_0, externtype)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{n : n, `instr*` : instr*}: - `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{n : n, frame : frame}: - `%`(`FRAME_%{%}`_callframe(n, frame)) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/09-sub.il b/spectec/test-middlend/specification.exp/10-sub.il similarity index 70% rename from spectec/test-middlend/specification.exp/09-sub.il rename to spectec/test-middlend/specification.exp/10-sub.il index b0b0795880..613be3b9d6 100644 --- a/spectec/test-middlend/specification.exp/09-sub.il +++ b/spectec/test-middlend/specification.exp/10-sub.il @@ -42,11 +42,12 @@ def $prod(nat*) : nat } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $opt_(syntax X, X*) : X? +def $opt_(syntax X, X*) : X?? ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() + def $opt_{syntax X}(syntax X, []) = ?(?()) ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec rec { @@ -199,11 +200,6 @@ relation wf_uN: `%%`(N, uN) syntax sN = | `%`{i : int}(i : int) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_sN_0(x : sN) : (int) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_sN: `%%`(N, sN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -242,28 +238,30 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = $signif(N) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = $expon(N) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -340,7 +338,7 @@ def $fone(N : N) : fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -362,11 +360,6 @@ def $proj_list_0(syntax X, x : list(syntax X)) : (X*) syntax char = | `%`{i : nat}(i : nat) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_char_0(x : char) : (nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_char: `%`(char) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -374,57 +367,13 @@ relation wf_char: `%`(char) `%`(`%`_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = | `%`{`char*` : char*}(char*{char <- `char*`} : char*) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_name_0(x : name) : (char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -685,6 +634,9 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : uN}(TAG_externidx(tagidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1369,29 +1321,32 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = I32_Inn + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = F32_Fnn + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = I8_Jnn + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = I16_Jnn + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = I32_Jnn + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = I64_Jnn + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1432,21 +1387,22 @@ def $lsize(lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I32_storagetype) = $size(I32_numtype) + def $zsize(I32_storagetype) = ?($size(I32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I64_storagetype) = $size(I64_numtype) + def $zsize(I64_storagetype) = ?($size(I64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F32_storagetype) = $size(F32_numtype) + def $zsize(F32_storagetype) = ?($size(F32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F64_storagetype) = $size(F64_numtype) + def $zsize(F64_storagetype) = ?($size(F64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(V128_storagetype) = $vsize(V128_vectype) + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I8_storagetype) = $psize(I8_packtype) + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I16_storagetype) = $psize(I16_packtype) + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1478,7 +1434,9 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ?($Jnn_addrtype(!($inv_isize(n)))) + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) def $inv_jsize{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1537,7 +1495,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = ?(!($inv_jsize(n))) + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) def $inv_jsizenn{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1645,101 +1609,106 @@ def $diffrt(reftype : reftype, reftype : reftype) : reftype -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = _DEF_deftype(rectype, n) + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.44 def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.1-313.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:334.1-334.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:335.1-335.47 def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt*{xt <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:336.1-336.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.1-341.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.38 def $subst_typevar{tv : typevar}(tv, [], []) = $typeuse_typevar(tv) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.44 + def $subst_typevar{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}) = $typeuse_typevar(tv) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:371.1-371.44 + def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, []) = $typeuse_typevar(tv) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:372.1-372.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-407.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:408.1-408.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:409.1-409.63 def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:410.1-411.45 def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1760,106 +1729,106 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.1-342.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:375.1-375.66 def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.64 def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.1-347.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $heaptype_typeuse($subst_typevar(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.67 def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $heaptype_typeuse($subst_typevar(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.65 def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $heaptype_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:386.1-386.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_numtype($subst_numtype(I32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_numtype($subst_numtype(I64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_numtype($subst_numtype(F32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:388.1-388.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_numtype($subst_numtype(F64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.64 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_vectype($subst_vectype(V128_vectype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.64 def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:391.1-391.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.66 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_packtype($subst_packtype(I8_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.69 def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_packtype($subst_packtype(I16_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-398.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.1-355.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:400.1-400.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.1-356.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.74 def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.1-357.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-414.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) {tu', `tu'*`, tv', `tv'*`} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.1-358.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:419.1-419.80 def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } @@ -1972,11 +1941,11 @@ def $subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:451.1-451.97 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:457.1-457.97 def $subst_all_deftypes(deftype*, typeuse*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:452.1-452.40 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:458.1-458.40 def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:453.1-453.101 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:459.1-459.101 def $subst_all_deftypes{dt_1 : deftype, `dt*` : deftype*, `tu*` : typeuse*}([dt_1] ++ dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) = [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`}) } @@ -1985,43 +1954,40 @@ def $rollrt(typeidx : typeidx, rectype : rectype) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $rollrt{x : uN, rectype : rectype, `subtype*` : subtype*, `i*` : nat*, n : nat}(x, rectype) = REC_rectype(`%`_list($subst_subtype(subtype, _IDX_typevar(`%`_typeidx(($proj_uN_0(x).0 + i)))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.1-500.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:559.1-560.66 def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.1-501.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:562.1-562.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.1-529.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:530.1-530.59 def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -2223,12 +2189,12 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype($numtype_addrtype(addrtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype($numtype_addrtype(addrtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free @@ -4813,7 +4779,7 @@ def $free_block(instr*) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- where free = $free_list($free_instr(instr)*{instr <- `instr*`}) {free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -5175,51 +5141,55 @@ rec { def $with_locals(context : context, localidx*, localtype*) : context ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.37 + def $with_locals{C : context, x_1 : uN, `x*` : idx*}(C, [x_1] ++ x*{x <- `x*`}, []) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:50.1-50.41 + def $with_locals{C : context, lct_1 : localtype, `lct*` : localtype*}(C, [], [lct_1] ++ lct*{lct <- `lct*`}) = C + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.90 def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.1-61.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:70.1-70.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}) {dt', `dt'*`} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + -- where dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context) {dt', `dt'*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + -- where dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context) {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5371,7 +5341,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- wf_context: `%`(C) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 @@ -5380,7 +5349,6 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) -- wf_context: `%`(C) -- wf_subtype: `%`(st) -- wf_typeuse: `%`(REC_typeuse(i)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 @@ -5454,12 +5422,9 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) - -- if (|`comptype'*`| = |`x'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5501,11 +5466,9 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- wf_comptype: `%`(comptype) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) - -- if (|`comptype'*`| = |`typeuse'**`|) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) -- (if ($unrollht(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5549,7 +5512,6 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) - -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 @@ -5583,7 +5545,6 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 @@ -5669,7 +5630,6 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 @@ -5678,17 +5638,14 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- wf_context: `%`(C) -- wf_heaptype: `%`(heaptype) -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) - -- if (j < |typeuse*{typeuse <- `typeuse*`}|) -- wf_context: `%`(C) -- wf_heaptype: `%`(REC_heaptype(i)) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 @@ -5789,7 +5746,6 @@ relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) -- wf_context: `%`(C) -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} - -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 @@ -5838,8 +5794,6 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- if (|`lct*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5857,7 +5811,6 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -5961,8 +5914,6 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) - -- if (|`t*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -6093,7 +6044,6 @@ relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6104,9 +6054,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6115,9 +6063,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6125,7 +6071,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -6133,7 +6078,6 @@ relation Catch_ok: `%|-%:OK`(context, catch) `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -6158,6 +6102,8 @@ def $default_(valtype : valtype) : val? -- wf_val: `%`(REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_(BOT_valtype) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -6271,7 +6217,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(BR_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6281,7 +6226,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 @@ -6290,9 +6234,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} - -- if ($proj_uN_0(l').0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -6302,7 +6244,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) @@ -6312,7 +6253,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 @@ -6322,7 +6262,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6336,7 +6275,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) - -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) @@ -6350,7 +6288,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 @@ -6360,7 +6297,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 @@ -6372,10 +6308,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 @@ -6397,7 +6331,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6412,7 +6345,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6429,10 +6361,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- if ($proj_uN_0(y).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) @@ -6446,8 +6376,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 @@ -6485,9 +6414,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(REF.FUNC_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) - -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 @@ -6554,7 +6481,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 @@ -6564,7 +6490,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} @@ -6576,9 +6501,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6590,9 +6513,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 @@ -6602,7 +6523,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 @@ -6612,7 +6532,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) @@ -6623,7 +6542,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 @@ -6633,9 +6551,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 @@ -6645,10 +6561,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 @@ -6658,7 +6572,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) @@ -6669,7 +6582,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 @@ -6686,7 +6598,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 @@ -6697,9 +6608,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) - -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) @@ -6710,9 +6619,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 @@ -6722,10 +6629,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 @@ -6751,7 +6656,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 @@ -6761,7 +6665,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 @@ -6771,7 +6674,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOCAL.TEE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- wf_localtype: `%`(`%%`_localtype(init, t)) - -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 @@ -6781,7 +6683,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 @@ -6791,7 +6692,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(GLOBAL.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 @@ -6801,7 +6701,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.GET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 @@ -6811,7 +6710,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.SET_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 @@ -6821,7 +6719,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.SIZE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 @@ -6831,7 +6728,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.GROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 @@ -6841,7 +6737,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 @@ -6852,9 +6747,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) - -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) - -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6866,9 +6759,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) - -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -6879,7 +6770,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_reftype: `%`(rt) -- wf_instr: `%`(ELEM.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 @@ -6889,7 +6779,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.SIZE_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 @@ -6899,7 +6788,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.GROW_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 @@ -6909,7 +6797,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.FILL_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 @@ -6920,9 +6807,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) - -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) - -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 @@ -6932,9 +6817,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 @@ -6943,7 +6826,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_context: `%`(C) -- wf_instr: `%`(DATA.DROP_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 @@ -6953,7 +6835,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -6964,7 +6845,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -6975,7 +6855,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) @@ -6986,7 +6865,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, M) @@ -6997,7 +6875,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -7008,7 +6885,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) @@ -7019,7 +6895,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -7030,7 +6905,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) @@ -7041,7 +6915,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7053,7 +6926,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) @@ -7064,7 +6936,6 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -7284,13 +7155,10 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`t*`|) -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`init*`| = |`x_1*`|) - -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) @@ -7414,7 +7282,6 @@ relation Instr_const: `%|-%CONST`(context, instr) -- wf_context: `%`(C) -- wf_instr: `%`(GLOBAL.GET_instr(x)) -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -7525,13 +7392,11 @@ relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) - -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- wf_context: `%`(C) -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (|`lct*`| = |`local*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) @@ -7549,7 +7414,6 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) -- wf_context: `%`(C) -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7585,7 +7449,6 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- wf_reftype: `%`(rt) -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) @@ -7609,7 +7472,6 @@ relation Start_ok: `%|-%:OK`(context, start) -- wf_context: `%`(C) -- wf_start: `%`(START_start(x)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7629,7 +7491,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TAG_externidx(x)) -- wf_externtype: `%`(TAG_externtype(jt)) - -- if ($proj_uN_0(x).0 < |C.TAGS_context|) -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7638,7 +7499,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(GLOBAL_externidx(x)) -- wf_externtype: `%`(GLOBAL_externtype(gt)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7647,7 +7507,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(MEM_externidx(x)) -- wf_externtype: `%`(MEM_externtype(mt)) - -- if ($proj_uN_0(x).0 < |C.MEMS_context|) -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7656,7 +7515,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(TABLE_externidx(x)) -- wf_externtype: `%`(TABLE_externtype(tt)) - -- if ($proj_uN_0(x).0 < |C.TABLES_context|) -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7665,7 +7523,6 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) -- wf_context: `%`(C) -- wf_externidx: `%`(FUNC_externidx(x)) -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) - -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -7755,24 +7612,15 @@ relation Module_ok: `|-%:%`(module, moduletype) -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- if (|`import*`| = |`xt_I*`|) -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} - -- if (|`jt*`| = |`tag*`|) -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) - -- if (|`mem*`| = |`mt*`|) -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} - -- if (|`table*`| = |`tt*`|) -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} - -- if (|`dt*`| = |`func*`|) -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} - -- if (|`data*`| = |`ok*`|) -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} - -- if (|`elem*`| = |`rt*`|) -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} - -- if (|`export*`| = |`nm*`|) - -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) @@ -7923,21 +7771,22 @@ def $inv_signed_(N : N, int : int) : nat -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx? +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I32_storagetype) = ?() + def $sx(I32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I64_storagetype) = ?() + def $sx(I64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(F32_storagetype) = ?() + def $sx(F32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(F64_storagetype) = ?() + def $sx(F64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(V128_storagetype) = ?() + def $sx(V128_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I8_storagetype) = ?(S_sx) + def $sx(I8_storagetype) = ?(?(S_sx)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I16_storagetype) = ?(S_sx) + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_ @@ -8982,29 +8831,29 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -9013,15 +8862,15 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* @@ -9031,36 +8880,36 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -9070,36 +8919,36 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -9108,33 +8957,33 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* @@ -9143,17 +8992,17 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -9162,37 +9011,37 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -9201,19 +9050,19 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -9222,33 +9071,33 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -9257,33 +9106,33 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -9293,9 +9142,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) @@ -9303,9 +9152,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F64_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9315,29 +9164,29 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -9346,29 +9195,29 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 @@ -9378,7 +9227,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) @@ -9386,7 +9235,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) @@ -9394,7 +9243,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) @@ -9402,7 +9251,7 @@ def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9413,36 +9262,36 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ @@ -9452,36 +9301,36 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* @@ -9911,291 +9760,291 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lan ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ @@ -10207,8 +10056,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -10218,8 +10067,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v @@ -10229,8 +10078,8 @@ def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{}) {c, `c*`, `c**`} -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -10301,11 +10150,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10315,11 +10164,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10329,11 +10178,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10343,11 +10192,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10357,11 +10206,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10371,11 +10220,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10385,11 +10234,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10399,11 +10248,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10413,11 +10262,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10427,11 +10276,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10441,11 +10290,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10455,11 +10304,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10469,11 +10318,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10483,11 +10332,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10497,11 +10346,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v -- wf_uN: `%%`(128, v) @@ -10511,11 +10360,11 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* @@ -10534,9 +10383,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10544,9 +10393,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10554,9 +10403,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10564,9 +10413,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10574,9 +10423,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10584,9 +10433,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10594,9 +10443,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10604,9 +10453,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10614,9 +10463,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10624,9 +10473,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10634,9 +10483,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10644,9 +10493,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10654,9 +10503,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10664,9 +10513,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10674,9 +10523,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10684,9 +10533,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ @@ -10782,11 +10631,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10796,11 +10645,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10810,11 +10659,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10824,11 +10673,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10838,11 +10687,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10852,11 +10701,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10866,11 +10715,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10880,11 +10729,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10894,11 +10743,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10908,11 +10757,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10922,11 +10771,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10936,11 +10785,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10950,11 +10799,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10964,11 +10813,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10978,11 +10827,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10992,11 +10841,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* @@ -11309,9 +11158,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11326,9 +11175,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11343,9 +11192,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11360,9 +11209,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11377,9 +11226,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11394,9 +11243,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11411,9 +11260,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11428,9 +11277,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11445,9 +11294,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11462,9 +11311,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11479,9 +11328,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11496,9 +11345,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11513,9 +11362,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11530,9 +11379,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11547,9 +11396,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c @@ -11564,9 +11413,9 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) + -- where M = (2 * M_2) {M} + -- where c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2) {c'} + -- where c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c') {c''} -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -12011,176 +11860,178 @@ def $Ki : nat def $Ki = 1024 ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval +def $packfield_(storagetype : storagetype, val : val) : fieldval? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(BOT_storagetype, val) = $fieldval_val(val) + def $packfield_{val : val}(BOT_storagetype, val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(null?{null <- `null?`}, heaptype), val) = $fieldval_val(val) + def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(null?{null <- `null?`}, heaptype), val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(V128_storagetype, val) = $fieldval_val(val) + def $packfield_{val : val}(V128_storagetype, val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(F64_storagetype, val) = $fieldval_val(val) + def $packfield_{val : val}(F64_storagetype, val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(F32_storagetype, val) = $fieldval_val(val) + def $packfield_{val : val}(F32_storagetype, val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(I64_storagetype, val) = $fieldval_val(val) + def $packfield_{val : val}(I64_storagetype, val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(I32_storagetype, val) = $fieldval_val(val) + def $packfield_{val : val}(I32_storagetype, val) = ?($fieldval_val(val)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) + def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) + def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + def $packfield_{x0 : storagetype, x1 : val}(x0, x1) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val +def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + def $unpackfield_{addrref : addrref}(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = ?(REF.EXTERN_val(addrref)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = ?(REF.HOST_ADDR_val(hostaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = ?(REF.EXN_ADDR_val(exnaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = ?(REF.FUNC_ADDR_val(funcaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = ?(REF.ARRAY_ADDR_val(arrayaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = ?(REF.STRUCT_ADDR_val(structaddr)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + def $unpackfield_{u31 : u31}(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = ?(REF.I31_NUM_val(u31)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + def $unpackfield_{heaptype_0 : heaptype}(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = ?(REF.NULL_val(heaptype_0)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + def $unpackfield_{vectype : vectype, vec_ : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = ?(VCONST_val(vectype, vec_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = ?(CONST_val(numtype, num_)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) + def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) + def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + def $unpackfield_{x0 : storagetype, x1 : sx?, x2 : fieldval}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -12447,7 +12298,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} @@ -12460,7 +12311,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} @@ -12485,9 +12336,9 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- wf_store: `%`(s) @@ -12496,58 +12347,54 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.I31_NUM_ref(i)) -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- wf_store: `%`(s) -- wf_exninst: `%`(exn) -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) - -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- wf_store: `%`(s) @@ -12556,7 +12403,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- wf_store: `%`(s) @@ -12595,49 +12442,44 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) - -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) - -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) - -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) - -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- wf_store: `%`(s) -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) - -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- wf_store: `%`(s) @@ -12652,74 +12494,31 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(val) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([$instr_ref(ref) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) @@ -12734,29 +12533,6 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12783,7 +12559,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12793,7 +12568,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_val: `%`(val_2) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12802,7 +12576,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12811,7 +12584,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12844,7 +12616,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12852,17 +12623,15 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_instr: `%`(BR_IF_instr(l)) - -- if ($proj_num__0(c) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: @@ -12870,7 +12639,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) -- wf_instr: `%`(BR_instr(l')) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12883,11 +12651,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- if (val =/= REF.NULL_val(ht)) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([$instr_val(val) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: @@ -12898,12 +12666,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: @@ -12978,7 +12746,6 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.i31{i : num_}: `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) - -- if ($proj_num__0(i) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(REF.I31_instr) -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) @@ -12993,12 +12760,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= REF.NULL_ref(ht)) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.IS_NULL_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([$instr_ref(ref) REF.IS_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: @@ -13010,11 +12777,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) + -- if (ref =/= REF.NULL_ref(ht)) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: @@ -13028,23 +12795,24 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: @@ -13100,7 +12868,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13118,7 +12885,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13136,7 +12902,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13146,7 +12911,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(RELOP_instr(nt, relop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13155,7 +12919,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13172,7 +12935,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13182,7 +12944,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13193,7 +12954,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13202,7 +12962,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13211,7 +12970,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13229,7 +12987,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13249,7 +13006,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13271,8 +13027,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) - -- if ($proj_num__0(c) =/= ?()) - -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13291,7 +13045,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13300,7 +13053,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) - -- if ($proj_num__0(c) =/= ?()) -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13338,7 +13090,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13348,9 +13099,6 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) - -- if ($proj_num__0(c_2) =/= ?()) - -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) - -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13463,8 +13211,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13474,8 +13220,6 @@ relation `Step_read_before_throw_ref-handler-next`: `%`(config) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -13486,24 +13230,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13513,8 +13239,6 @@ relation `Step_read_before_table.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13531,43 +13255,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13577,26 +13264,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13606,24 +13273,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13633,8 +13282,6 @@ relation `Step_read_before_memory.copy-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13651,43 +13298,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13697,26 +13307,6 @@ relation `Step_read_before_memory.init-zero`: `%`(config) `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13749,26 +13339,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13778,8 +13348,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13787,8 +13355,6 @@ relation `Step_read_before_array.copy-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13805,8 +13371,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13814,8 +13378,6 @@ relation `Step_read_before_array.copy-le`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13830,16 +13392,14 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) -- wf_instr: `%`(ARRAY.SET_instr(x_1)) - -- if ($proj_num__0(i_1) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13853,8 +13413,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13862,8 +13420,6 @@ relation `Step_read_before_array.copy-gt`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13873,7 +13429,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13881,34 +13436,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13920,16 +13447,13 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13948,16 +13472,13 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14013,11 +13534,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14034,7 +13553,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) @@ -14043,11 +13561,9 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) - -- if (a < |$funcinst(z)|) -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14075,7 +13591,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) -- wf_instr: `%`(CALL_REF_instr(yy)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14119,8 +13634,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14131,8 +13644,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) -- wf_instr: `%`(BR_instr(l)) - -- if (a < |$exninst(z)|) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) @@ -14183,15 +13694,13 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: @@ -14207,49 +13716,46 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14259,14 +13765,14 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14276,30 +13782,26 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14307,14 +13809,12 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14322,7 +13822,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14330,7 +13829,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14338,7 +13836,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14346,7 +13843,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14354,7 +13850,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14362,7 +13857,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14372,7 +13866,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} - -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14391,7 +13883,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -14402,7 +13893,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14411,7 +13901,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_uN: `%%`(N, j) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) @@ -14420,7 +13909,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14430,7 +13918,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) - -- if ($proj_num__0(i) =/= ?()) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) @@ -14450,49 +13937,46 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14502,14 +13986,14 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14519,30 +14003,26 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) - -- if ($proj_num__0(j) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) @@ -14551,7 +14031,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: @@ -14562,7 +14041,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref.func{z : state, x : idx}: `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) - -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) @@ -14607,7 +14085,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14618,10 +14095,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))]) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) - -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0])))]) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -14641,7 +14115,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14650,7 +14123,6 @@ relation Step_read: `%~>%`(config, instr*) -- (wf_ref: `%`(ref))*{ref <- `ref*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- if ($proj_num__0(i) =/= ?()) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14660,20 +14132,17 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: @@ -14686,16 +14155,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))]) - -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) - -- if ($proj_num__0(i) =/= ?()) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0])))]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -14709,7 +14173,6 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) - -- if (a < |$arrayinst(z)|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) @@ -14724,21 +14187,20 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) - -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14746,7 +14208,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14765,8 +14226,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if (a_1 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14774,22 +14233,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_2) =/= ?()) - -- if (a_2 < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14802,15 +14261,12 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14825,7 +14281,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14838,8 +14294,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14847,21 +14301,22 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -14871,8 +14326,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14886,8 +14339,6 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14897,8 +14348,7 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14909,23 +14359,20 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -14980,9 +14427,8 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) @@ -15003,13 +14449,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) @@ -15019,7 +14463,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 @@ -15039,13 +14482,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) @@ -15055,16 +14496,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 @@ -15072,13 +14510,11 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) @@ -15088,17 +14524,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_num__0(i) =/= ?()) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) - -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) -- if (N = $jsize(Jnn)) -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) @@ -15109,7 +14541,6 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 @@ -15130,10 +14561,10 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`, zt <- `zt*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: @@ -15143,10 +14574,9 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) - -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, !($packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val))), [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) @@ -15156,9 +14586,9 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !($packfield_(zt, val))^n{val <- `val*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: @@ -15171,16 +14601,13 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) - -- if ($proj_num__0(i) =/= ?()) + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, !($packfield_(zt, val))), [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -15224,8 +14651,8 @@ def $alloctypes(type*) : deftype* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) + -- where deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}) {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), $typeuse_deftype(deftype')*{deftype' <- `deftype'*`})) -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) } @@ -15249,8 +14676,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- where (s_1, ja) = $alloctag(s, tagtype) {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}) {ja', `ja'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15272,8 +14699,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- where (s_1, ga) = $allocglobal(s, globaltype, val) {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}) {ga', `ga'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15295,8 +14722,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- where (s_1, ma) = $allocmem(s, memtype) {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}) {ma', `ma'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15318,8 +14745,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- where (s_1, ta) = $alloctable(s, tabletype, ref) {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}) {s_2, ta', `ta'*`} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15341,8 +14768,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- where (s_1, fa) = $allocfunc(s, dt, funccode, moduleinst) {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}) {fa', `fa'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15364,8 +14791,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- where (s_1, da) = $allocdata(s, ok, b*{b <- `b*`}) {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) {da', `da'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15387,8 +14814,8 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- where (s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}) {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) {ea', `ea'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15436,27 +14863,27 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}) {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}) {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}) {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}) {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}) {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}) {dt, `dt*`} -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{tagtype <- `tagtype*`}) {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`}) {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{memtype <- `memtype*`}) {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`}) {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}) {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {ea, `ea*`, s_6} -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) @@ -15501,9 +14928,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = $allocglobal(s, gt, val) {a, s'} + -- where (z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}) {val', `val'*`, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec @@ -15530,21 +14957,21 @@ def $instantiate(store : store, module : module, externaddr*) : config -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- where (z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}) {val_G, `val_G*`, z'} -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- where (s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) {moduleinst, s'} -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config @@ -15555,4196 +14982,3 @@ def $invoke(store : store, funcaddr : funcaddr, val*) : config -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) - -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[$proj_uN_0(x).0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) - -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -def $decl_data(data) : decl - def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) - -def $decl_elem(elem) : decl - def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) - -def $decl_export(export) : decl - def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) - -def $decl_func(func) : decl - def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) - -def $decl_global(global) : decl - def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) - -def $decl_import(import) : decl - def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) - -def $decl_mem(mem) : decl - def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) - -def $decl_start(start) : decl - def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) - -def $decl_table(table) : decl - def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) - -def $decl_tag(tag) : decl - def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) - -def $decl_type(type) : decl - def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{rectype : rectype}: - `%`(TYPE_decl(rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{tagtype : tagtype}: - `%`(TAG_decl(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_decl(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{memtype : memtype}: - `%`(MEMORY_decl(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{tabletype : tabletype, expr : expr}: - `%`(TABLE_decl(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{`byte*` : byte*, datamode : datamode}: - `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{funcidx : funcidx}: - `%`(START_decl(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{name : name, externidx : externidx}: - `%`(EXPORT_decl(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'*{decl' <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{name : name, var_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, var_0, externtype)] ++ decl'*{decl' <- `decl'*`}) = [IMPORT_import(name, var_0, externtype)] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'*{decl' <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'*{decl' <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'*{decl' <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'*{decl' <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, local*{local <- `local*`}, expr)] ++ decl'*{decl' <- `decl'*`}) = [FUNC_func(typeidx, local*{local <- `local*`}, expr)] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(byte*{byte <- `byte*`}, datamode)] ++ decl'*{decl' <- `decl'*`}) = [DATA_data(byte*{byte <- `byte*`}, datamode)] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)] ++ decl'*{decl' <- `decl'*`}) = [ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'*{decl' <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'*{decl' <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{name : name, var_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [IMPORT_decl(name, var_0, externtype)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{n : n, `instr*` : instr*}: - `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{n : n, frame : frame}: - `%`(`FRAME_%{%}`_callframe(n, frame)) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/11-definition-to-relation.il b/spectec/test-middlend/specification.exp/11-definition-to-relation.il new file mode 100644 index 0000000000..235b281fff --- /dev/null +++ b/spectec/test-middlend/specification.exp/11-definition-to-relation.il @@ -0,0 +1,17611 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'*{n' <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'*{n' <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, `w*` : X*, n : nat, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`{i : int}(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM{m : m, exp : exp}(m : m, exp : exp) + | SUBNORM{m : m, exp : exp}(m : m) + | INF + | NAN{m : m}(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, m : m, exp : exp}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS{fNmag : fNmag}(fNmag : fNmag) + | NEG{fNmag : fNmag}(fNmag : fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, fNmag : fNmag}: + `%%`(N, POS_fN(fNmag)) + -- wf_fNmag: `%%`(N, fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, fNmag : fNmag}: + `%%`(N, NEG_fN(fNmag)) + -- wf_fNmag: `%%`(N, fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fzero: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fzero_case_0{N : nat}: + `%%`(N, POS_fN(SUBNORM_fNmag(0))) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fnat: `%%%`(N, nat, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fnat_case_0{N : nat, n : nat}: + `%%%`(N, n, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fone: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fone_case_0{N : nat}: + `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $utf8(char*) : byte* + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*}: + `%`(`%`_name(char*{char <- `char*`})) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC{funcidx : funcidx}(funcidx : funcidx) + | GLOBAL{globalidx : globalidx}(globalidx : globalidx) + | TABLE{tableidx : tableidx}(tableidx : tableidx) + | MEM{memidx : memidx}(memidx : memidx) + | TAG{tagidx : tagidx}(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES{`typeidx*` : typeidx*} typeidx*, + FUNCS{`funcidx*` : funcidx*} funcidx*, + GLOBALS{`globalidx*` : globalidx*} globalidx*, + TABLES{`tableidx*` : tableidx*} tableidx*, + MEMS{`memidx*` : memidx*} memidx*, + ELEMS{`elemidx*` : elemidx*} elemidx*, + DATAS{`dataidx*` : dataidx*} dataidx*, + LOCALS{`localidx*` : localidx*} localidx*, + LABELS{`labelidx*` : labelidx*} labelidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_opt: `%%`(free?, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_opt_case_1{free : free}: + `%%`(?(free), free) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'*{free' <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_typeidx: `%%`(typeidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_typeidx_case_0{typeidx : uN}: + `%%`(typeidx, {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_funcidx: `%%`(funcidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_funcidx_case_0{funcidx : uN}: + `%%`(funcidx, {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_globalidx: `%%`(globalidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_globalidx_case_0{globalidx : uN}: + `%%`(globalidx, {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_tableidx: `%%`(tableidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_tableidx_case_0{tableidx : uN}: + `%%`(tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_memidx: `%%`(memidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_memidx_case_0{memidx : uN}: + `%%`(memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_elemidx: `%%`(elemidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_elemidx_case_0{elemidx : uN}: + `%%`(elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_dataidx: `%%`(dataidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_dataidx_case_0{dataidx : uN}: + `%%`(dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_localidx: `%%`(localidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_localidx_case_0{localidx : uN}: + `%%`(localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_labelidx: `%%`(labelidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_labelidx_case_0{labelidx : uN}: + `%%`(labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_externidx: `%%`(externidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_0{funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_1{globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_2{tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_3{memidx : uN, var_0 : free}: + `%%`(MEM_externidx(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_4{tagidx : uN}: + `%%`(TAG_externidx(tagidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | REC{n : n}(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | BOT + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) + | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) + | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC{list : list(syntax subtype)}(list : list(syntax subtype)) +} + +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{n : n}: + `%`(REC_heaptype(n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{list : list(syntax fieldtype)}: + `%`(STRUCT_comptype(list)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, var_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_ANYREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EQREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_I31REF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_STRUCTREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_ARRAYREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_FUNCREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EXNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EXTERNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLFUNCREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLEXNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLEXTERNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`{u64 : u64}(u64 : u64, u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, var_0 : u64?}: + `%`(`[%..%]`_limits(u64, var_0)) + -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, var_0))?{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG{tagtype : tagtype}(tagtype : tagtype) + | GLOBAL{globaltype : globaltype}(globaltype : globaltype) + | MEM{memtype : memtype}(memtype : memtype) + | TABLE{tabletype : tabletype}(tabletype : tabletype) + | FUNC{typeuse : typeuse}(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, var_0 : externtype*}: + `%`(`%->%`_moduletype(externtype*{externtype <- `externtype*`}, var_0)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) + def $inv_jsize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) + def $inv_jsizenn{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_unpack: `%%`(storagetype, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_1{`null?` : null?, heaptype : heaptype}: + `%%`(REF_storagetype(null?{null <- `null?`}, heaptype), REF_valtype(null?{null <- `null?`}, heaptype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_diffrt: `%%%`(reftype, reftype, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_diffrt_case_0{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_diffrt_case_1{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt*{xt <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_1{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}: + `%%%%`(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}, $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_2{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}: + `%%%%`(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [], $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_3{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse}: + `%%%%`(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}, (if (tv = tv_1) then tu_1 else var_0)) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ([], [])) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}, ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = var_0 {tu', `tu'*`, tv', `tv'*`} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(REC_typeuse(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(_IDX_typeuse(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_typeuse(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_typeuse(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, BOT_valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*), `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = var_1 {tu', `tu'*`, tv', `tv'*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.6-358.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.6-358.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%PAGE`_memtype(at, lim)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TAG_externtype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(MEM_externtype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_4{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, FUNC_externtype($typeuse_deftype(var_0))) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(var_0))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- wf_moduletype: `%`(`%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_all_valtype_case_0{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*, var_0 : valtype}: + `%%%`(t, tu^n{tu <- `tu*`}, var_0) + -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.6-500.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.6-500.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.6-501.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.6-501.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), var_0) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.6-529.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.6-529.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tagtype: `%%`(tagtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_globaltype: `%%`(globaltype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_memtype: `%%`(memtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_memtype_case_0{addrtype : addrtype, limits : limits, var_0 : free}: + `%%`(`%%PAGE`_memtype(addrtype, limits), var_0) + -- fun_free_addrtype: `%%`(addrtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tabletype: `%%`(tabletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_1 : free, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype, var_1) + -- fun_free_addrtype: `%%`(addrtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_datatype: `%%`(datatype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_datatype_case_0: + `%%`(OK_datatype, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_elemtype: `%%`(elemtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_externtype: `%%`(externtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_2{memtype : memtype, var_0 : free}: + `%%`(MEM_externtype(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_moduletype: `%%`(moduletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`}), var_0 +++ var_2) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0{Inn : Inn, var_x : iN}(Inn : Inn, var_x : iN) + | mk_num__1{Fnn : Fnn, var_x : fN}(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) + | mk_lane__1{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) + | mk_lane__2{Jnn : Jnn, var_x : iN}(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = $lanetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = $lanetype_packtype(packtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) + | mk_lit__1{vectype : vectype, var_x : vec_}(vectype : vectype, var_x : vec_) + | mk_lit__2{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = $storagetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = $storagetype_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = $storagetype_packtype(packtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0{Inn : Inn, var_x : unop_Inn}(Inn : Inn, var_x : unop_Inn) + | mk_unop__1{Fnn : Fnn, var_x : unop_Fnn}(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV{sx : sx}(sx : sx) + | REM{sx : sx}(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR{sx : sx}(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0{Inn : Inn, var_x : binop_Inn}(Inn : Inn, var_x : binop_Inn) + | mk_binop__1{Fnn : Fnn, var_x : binop_Fnn}(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0{Inn : Inn, var_x : testop_Inn}(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0{Inn : Inn, var_x : relop_Inn}(Inn : Inn, var_x : relop_Inn) + | mk_relop__1{Fnn : Fnn, var_x : relop_Fnn}(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND{sx : sx}(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT{sx : sx}(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC{sx : sx}(sx : sx) + | TRUNC_SAT{sx : sx}(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_dim: `%%`(shape, dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_dim_case_0{Lnn : lanetype, N : nat}: + `%%`(`%X%`_shape(Lnn, `%`_dim(N)), `%`_dim(N)) + -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`{shape : shape, Jnn : Jnn}(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{shape : shape, Jnn : Jnn}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`{shape : shape}(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT{sx : sx}(sx : sx) + | SUB_SAT{sx : sx}(sx : sx) + | MUL + | `AVGRU` + | `Q15MULR_SATS` + | `RELAXED_Q15MULRS` + | MIN{sx : sx}(sx : sx) + | MAX{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `AVGRU`_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0{M : M, var_x : vswizzlop_M}(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL{half : half, sx : sx}(half : half, sx : sx) + | `DOTS` + | `RELAXED_DOTS` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | `RELAXED_DOT_ADDS` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND{half : half, sx : sx}(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE{zero : zero}(zero : zero) + | `PROMOTELOW` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN{u32 : u32} u32, + OFFSET{u64 : u64} u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0{Inn : Inn, var_x : loadop_Inn}(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0{Inn : Inn, var_x : storeop_Inn}(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) + | SPLAT{sz : sz}(sz : sz) + | ZERO{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) + | _IDX{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 +syntax addrref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 +relation wf_addrref: `%`(addrref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_0{u31 : u31}: + `%`(REF.I31_NUM_addrref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_1{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_addrref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_2{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_addrref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_3{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_addrref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_4{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_addrref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_5{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_addrref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_6{addrref : addrref}: + `%`(REF.EXTERN_addrref(addrref)) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) + | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) + | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) + | MEM{memaddr : memaddr}(memaddr : memaddr) + | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) + | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME{name : name} name, + ADDR{externaddr : externaddr} externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES{`deftype*` : deftype*} deftype*, + TAGS{`tagaddr*` : tagaddr*} tagaddr*, + GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, + MEMS{`memaddr*` : memaddr*} memaddr*, + TABLES{`tableaddr*` : tableaddr*} tableaddr*, + FUNCS{`funcaddr*` : funcaddr*} funcaddr*, + DATAS{`dataaddr*` : dataaddr*} dataaddr*, + ELEMS{`elemaddr*` : elemaddr*} elemaddr*, + EXPORTS{`exportinst*` : exportinst*} exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_val(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, vec_ : vec_}: + `%`(VCONST_val(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{heaptype : heaptype}: + `%`(REF.NULL_val(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3{u31 : u31}: + `%`(REF.I31_NUM_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{addrref : addrref}: + `%`(REF.EXTERN_val(addrref)) + -- wf_addrref: `%`(addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS{`val?*` : val?*} val?*, + MODULE{moduleinst : moduleinst} moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) + | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) + | BR{labelidx : labelidx}(labelidx : labelidx) + | BR_IF{labelidx : labelidx}(labelidx : labelidx) + | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) + | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | CALL{funcidx : funcidx}(funcidx : funcidx) + | CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) + | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | THROW{tagidx : tagidx}(tagidx : tagidx) + | THROW_REF + | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) + | LOCAL.GET{localidx : localidx}(localidx : localidx) + | LOCAL.SET{localidx : localidx}(localidx : localidx) + | LOCAL.TEE{localidx : localidx}(localidx : localidx) + | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) + | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) + | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) + | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) + | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) + | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) + | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) + | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) + | LOAD{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_?, memidx : memidx, memarg : memarg) + | STORE{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_?, memidx : memidx, memarg : memarg) + | VLOAD{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | MEMORY.SIZE{memidx : memidx}(memidx : memidx) + | MEMORY.GROW{memidx : memidx}(memidx : memidx) + | MEMORY.FILL{memidx : memidx}(memidx : memidx) + | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) + | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) + | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.IS_NULL + | REF.AS_NON_NULL + | REF.EQ + | REF.TEST{reftype : reftype}(reftype : reftype) + | REF.CAST{reftype : reftype}(reftype : reftype) + | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) + | REF.I31 + | I31.GET{sx : sx}(sx : sx) + | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) + | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) + | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.LEN + | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) + | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | EXTERN.CONVERT_ANY + | ANY.CONVERT_EXTERN + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | UNOP{numtype : numtype, unop_ : unop_}(numtype : numtype, unop_ : unop_) + | BINOP{numtype : numtype, binop_ : binop_}(numtype : numtype, binop_ : binop_) + | TESTOP{numtype : numtype, testop_ : testop_}(numtype : numtype, testop_ : testop_) + | RELOP{numtype : numtype, relop_ : relop_}(numtype : numtype, relop_ : relop_) + | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) + | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) + | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) + | VUNOP{shape : shape, vunop_ : vunop_}(shape : shape, vunop_ : vunop_) + | VBINOP{shape : shape, vbinop_ : vbinop_}(shape : shape, vbinop_ : vbinop_) + | VTERNOP{shape : shape, vternop_ : vternop_}(shape : shape, vternop_ : vternop_) + | VTESTOP{shape : shape, vtestop_ : vtestop_}(shape : shape, vtestop_ : vtestop_) + | VRELOP{shape : shape, vrelop_ : vrelop_}(shape : shape, vrelop_ : vrelop_) + | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_}(ishape : ishape, vshiftop_ : vshiftop_) + | VBITMASK{ishape : ishape}(ishape : ishape) + | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_}(bshape : bshape, vswizzlop_ : vswizzlop_) + | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) + | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__) + | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__) + | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__) + | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) + | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) + | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | TRAP +} + +def $instr_addrref(addrref) : instr + def $instr_addrref{x0 : u31}(REF.I31_NUM_addrref(x0)) = REF.I31_NUM_instr(x0) + def $instr_addrref{x0 : structaddr}(REF.STRUCT_ADDR_addrref(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_addrref{x0 : arrayaddr}(REF.ARRAY_ADDR_addrref(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_addrref{x0 : funcaddr}(REF.FUNC_ADDR_addrref(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_addrref{x0 : exnaddr}(REF.EXN_ADDR_addrref(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_addrref{x0 : hostaddr}(REF.HOST_ADDR_addrref(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_addrref{x0 : addrref}(REF.EXTERN_addrref(x0)) = REF.EXTERN_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : heaptype}(REF.NULL_val(x0)) = REF.NULL_instr(x0) + def $instr_val{x0 : u31}(REF.I31_NUM_val(x0)) = REF.I31_NUM_instr(x0) + def $instr_val{x0 : structaddr}(REF.STRUCT_ADDR_val(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_val{x0 : arrayaddr}(REF.ARRAY_ADDR_val(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_val{x0 : funcaddr}(REF.FUNC_ADDR_val(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_val{x0 : exnaddr}(REF.EXN_ADDR_val(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_val{x0 : hostaddr}(REF.HOST_ADDR_val(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_val{x0 : addrref}(REF.EXTERN_val(x0)) = REF.EXTERN_instr(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, var_0 : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, instr*{instr <- `instr*`}, var_0)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_9{`labelidx*` : labelidx*, var_0 : labelidx}: + `%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, var_0)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, var_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, var_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, var_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, var_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_23{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, list, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_24{localidx : localidx}: + `%`(LOCAL.GET_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_25{localidx : localidx}: + `%`(LOCAL.SET_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_26{localidx : localidx}: + `%`(LOCAL.TEE_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_27{globalidx : globalidx}: + `%`(GLOBAL.GET_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_28{globalidx : globalidx}: + `%`(GLOBAL.SET_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_29{tableidx : tableidx}: + `%`(TABLE.GET_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_30{tableidx : tableidx}: + `%`(TABLE.SET_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_31{tableidx : tableidx}: + `%`(TABLE.SIZE_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_32{tableidx : tableidx}: + `%`(TABLE.GROW_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_33{tableidx : tableidx}: + `%`(TABLE.FILL_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_34{tableidx : tableidx, var_0 : tableidx}: + `%`(TABLE.COPY_instr(tableidx, var_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(TABLE.INIT_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_36{elemidx : elemidx}: + `%`(ELEM.DROP_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_37{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, loadop_?{loadop_ <- `loadop_?`}, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, loadop_))?{loadop_ <- `loadop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_38{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, storeop_?{storeop_ <- `storeop_?`}, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, storeop_))?{storeop_ <- `storeop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_39{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, vloadop_?{vloadop_ <- `vloadop_?`}, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, vloadop_))?{vloadop_ <- `vloadop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_43{memidx : memidx}: + `%`(MEMORY.SIZE_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_44{memidx : memidx}: + `%`(MEMORY.GROW_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_45{memidx : memidx}: + `%`(MEMORY.FILL_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_46{memidx : memidx, var_0 : memidx}: + `%`(MEMORY.COPY_instr(memidx, var_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(MEMORY.INIT_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_48{dataidx : dataidx}: + `%`(DATA.DROP_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_49{heaptype : heaptype}: + `%`(REF.NULL_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_50: + `%`(REF.IS_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_51: + `%`(REF.AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_52: + `%`(REF.EQ_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_53{reftype : reftype}: + `%`(REF.TEST_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_54{reftype : reftype}: + `%`(REF.CAST_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_55{funcidx : funcidx}: + `%`(REF.FUNC_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_56: + `%`(REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_57{sx : sx}: + `%`(I31.GET_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_58{typeidx : typeidx}: + `%`(STRUCT.NEW_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_59{typeidx : typeidx}: + `%`(STRUCT.NEW_DEFAULT_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, u32 : u32}: + `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_61{typeidx : typeidx, u32 : u32}: + `%`(STRUCT.SET_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_62{typeidx : typeidx}: + `%`(ARRAY.NEW_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_63{typeidx : typeidx}: + `%`(ARRAY.NEW_DEFAULT_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(ARRAY.NEW_FIXED_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(ARRAY.NEW_DATA_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_68{typeidx : typeidx}: + `%`(ARRAY.SET_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_69: + `%`(ARRAY.LEN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_70{typeidx : typeidx}: + `%`(ARRAY.FILL_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_71{typeidx : typeidx, var_0 : typeidx}: + `%`(ARRAY.COPY_instr(typeidx, var_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(ARRAY.INIT_DATA_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_74: + `%`(EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_75: + `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_76{numtype : numtype, num_ : num_}: + `%`(CONST_instr(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_77{numtype : numtype, unop_ : unop_}: + `%`(UNOP_instr(numtype, unop_)) + -- wf_unop_: `%%`(numtype, unop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_78{numtype : numtype, binop_ : binop_}: + `%`(BINOP_instr(numtype, binop_)) + -- wf_binop_: `%%`(numtype, binop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_79{numtype : numtype, testop_ : testop_}: + `%`(TESTOP_instr(numtype, testop_)) + -- wf_testop_: `%%`(numtype, testop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_80{numtype : numtype, relop_ : relop_}: + `%`(RELOP_instr(numtype, relop_)) + -- wf_relop_: `%%`(numtype, relop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, cvtop__)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, cvtop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_82{vectype : vectype, vec_ : vec_}: + `%`(VCONST_instr(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_87{shape : shape, vunop_ : vunop_}: + `%`(VUNOP_instr(shape, vunop_)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, vunop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_88{shape : shape, vbinop_ : vbinop_}: + `%`(VBINOP_instr(shape, vbinop_)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, vbinop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_89{shape : shape, vternop_ : vternop_}: + `%`(VTERNOP_instr(shape, vternop_)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, vternop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_90{shape : shape, vtestop_ : vtestop_}: + `%`(VTESTOP_instr(shape, vtestop_)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, vtestop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_91{shape : shape, vrelop_ : vrelop_}: + `%`(VRELOP_instr(shape, vrelop_)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, vrelop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_92{ishape : ishape, vshiftop_ : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, vshiftop_)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, vshiftop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_94{bshape : bshape, vswizzlop_ : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, vswizzlop_)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, vswizzlop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*, var_0 : dim}: + `%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) + -- fun_dim: `%%`($proj_bshape_0(bshape).0, var_0) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, vextunop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, vextbinop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, vextternop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, vcvtop__)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, vcvtop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_104{u31 : u31}: + `%`(REF.I31_NUM_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_105{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_106{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_107{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_108{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_109{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_110{addrref : addrref}: + `%`(REF.EXTERN_instr(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_111{n : n, `instr*` : instr*, var_0 : instr*}: + `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, var_0)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_112{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, instr*{instr <- `instr*`})) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_113{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_114: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_memarg0: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_memarg0_case_0: + `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_const: `%%%`(consttype, lit_, instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_0{c : num_}: + `%%%`(I32_consttype, mk_lit__0_lit_(I32_numtype, c), CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_1{c : num_}: + `%%%`(I64_consttype, mk_lit__0_lit_(I64_numtype, c), CONST_instr(I64_numtype, c)) + -- wf_instr: `%`(CONST_instr(I64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_2{c : num_}: + `%%%`(F32_consttype, mk_lit__0_lit_(F32_numtype, c), CONST_instr(F32_numtype, c)) + -- wf_instr: `%`(CONST_instr(F32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_3{c : num_}: + `%%%`(F64_consttype, mk_lit__0_lit_(F64_numtype, c), CONST_instr(F64_numtype, c)) + -- wf_instr: `%`(CONST_instr(F64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_4{c : uN}: + `%%%`(V128_consttype, mk_lit__1_lit_(V128_vectype, c), VCONST_instr(V128_vectype, c)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_shape: `%%`(shape, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_shape_case_0{lanetype : lanetype, dim : dim, var_0 : free}: + `%%`(`%X%`_shape(lanetype, dim), var_0) + -- fun_free_lanetype: `%%`(lanetype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_blocktype: `%%`(blocktype, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: + `%%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`}), var_0) + -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_1{typeidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: + `%%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}), var_0) + -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr*{instr <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_7{labelidx : uN, var_0 : free}: + `%%`(BR_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_8{labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_10{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_11{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_14{funcidx : uN, var_0 : free}: + `%%`(CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_18{funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_21{numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(numtype, numlit), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_22{numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(numtype, unop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_23{numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(numtype, binop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_24{numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(numtype, testop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_25{numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(numtype, relop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_26{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_27{vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(vectype, veclit), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_28{vectype : vectype, vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(vectype, vvunop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_29{vectype : vectype, vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(vectype, vvbinop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_30{vectype : vectype, vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(vectype, vvternop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_31{vectype : vectype, vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(vectype, vvtestop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_32{shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(shape, vunop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_33{shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(shape, vbinop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_34{shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(shape, vternop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_35{shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(shape, vtestop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_36{shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(shape, vrelop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_37{ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_38{ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_39{bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_40{bshape : bshape, `laneidx*` : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`}), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_41{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_42{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_43{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_45{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_46{shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(shape), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_47{shape : shape, `sx?` : sx?, laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_48{shape : shape, laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_49{heaptype : heaptype, var_0 : free}: + `%%`(REF.NULL_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_50: + `%%`(REF.IS_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_51: + `%%`(REF.AS_NON_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_52: + `%%`(REF.EQ_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_53{reftype : reftype, var_0 : free}: + `%%`(REF.TEST_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_54{reftype : reftype, var_0 : free}: + `%%`(REF.CAST_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_55{funcidx : uN, var_0 : free}: + `%%`(REF.FUNC_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_56: + `%%`(REF.I31_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_57{sx : sx}: + `%%`(I31.GET_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_58{typeidx : uN}: + `%%`(STRUCT.NEW_instr(typeidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_59{typeidx : uN, var_0 : free}: + `%%`(STRUCT.NEW_DEFAULT_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_60{`sx?` : sx?, typeidx : uN, u32 : uN, var_0 : free}: + `%%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_61{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(STRUCT.SET_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_62{typeidx : uN, var_0 : free}: + `%%`(ARRAY.NEW_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_63{typeidx : uN, var_0 : free}: + `%%`(ARRAY.NEW_DEFAULT_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(ARRAY.NEW_FIXED_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_65{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.NEW_DATA_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_66{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_67{`sx?` : sx?, typeidx : uN, var_0 : free}: + `%%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_68{typeidx : uN, var_0 : free}: + `%%`(ARRAY.SET_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_69: + `%%`(ARRAY.LEN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_70{typeidx : uN, var_0 : free}: + `%%`(ARRAY.FILL_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_71{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.COPY_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_72{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.INIT_DATA_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_73{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_74: + `%%`(EXTERN.CONVERT_ANY_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_75: + `%%`(ANY.CONVERT_EXTERN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_76{localidx : uN, var_0 : free}: + `%%`(LOCAL.GET_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_77{localidx : uN, var_0 : free}: + `%%`(LOCAL.SET_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_78{localidx : uN, var_0 : free}: + `%%`(LOCAL.TEE_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_79{globalidx : uN, var_0 : free}: + `%%`(GLOBAL.GET_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_80{globalidx : uN, var_0 : free}: + `%%`(GLOBAL.SET_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_81{tableidx : uN, var_0 : free}: + `%%`(TABLE.GET_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_82{tableidx : uN, var_0 : free}: + `%%`(TABLE.SET_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_83{tableidx : uN, var_0 : free}: + `%%`(TABLE.SIZE_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_84{tableidx : uN, var_0 : free}: + `%%`(TABLE.GROW_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_85{tableidx : uN, var_0 : free}: + `%%`(TABLE.FILL_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_86{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(TABLE.COPY_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_87{tableidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(TABLE.INIT_instr(tableidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_88{elemidx : uN, var_0 : free}: + `%%`(ELEM.DROP_instr(elemidx), var_0) + -- fun_free_elemidx: `%%`(elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_89{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_90{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_91{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_92{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_93{vectype : vectype, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(vectype, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_94{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_95{memidx : uN, var_0 : free}: + `%%`(MEMORY.SIZE_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_96{memidx : uN, var_0 : free}: + `%%`(MEMORY.GROW_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_97{memidx : uN, var_0 : free}: + `%%`(MEMORY.FILL_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_98{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY.COPY_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_99{memidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY.INIT_instr(memidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_100{dataidx : uN, var_0 : free}: + `%%`(DATA.DROP_instr(dataidx), var_0) + -- fun_free_dataidx: `%%`(dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 + rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr*{instr <- `instr*`}, free[LABELS_free = var_0]) + -- (fun_free_instr: `%%`(instr, var_2))*{var_2 <- `var_2*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) + -- wf_free: `%`(free) + -- where free = var_1 {free} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_expr: `%%`(expr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr*{instr <- `instr*`}, var_0) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE{rectype : rectype}(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG{tagtype : tagtype}(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY{memtype : memtype}(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(byte*{byte <- `byte*`}, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL{valtype : valtype}(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START{funcidx : funcidx}(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, externtype : externtype, var_0 : name}: + `%`(IMPORT_import(name, var_0, externtype)) + -- wf_name: `%`(name) + -- wf_externtype: `%`(externtype) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_import: `%`(import))*{import <- `import*`} + -- (wf_tag: `%`(tag))*{tag <- `tag*`} + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_func: `%`(func))*{func <- `func*`} + -- (wf_data: `%`(data))*{data <- `data*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_type: `%%`(type, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_tag: `%%`(tag, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_global: `%%`(global, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_mem: `%%`(mem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_mem_case_0{memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_table: `%%`(table, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_local: `%%`(local, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_func: `%%`(func, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(typeidx, local*{local <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_3) + -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_datamode: `%%`(datamode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_data: `%%`(data, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte*{byte <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elemmode: `%%`(elemmode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elem: `%%`(elem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_start: `%%`(start, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_start_case_0{funcidx : uN, var_0 : free}: + `%%`(START_start(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_import: `%%`(import, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_export: `%%`(export, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_export_case_0{name : name, externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(name, externidx), var_0) + -- fun_free_externidx: `%%`(externidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_module: `%%`(module, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} + -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} + -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} + -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} + -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} + -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} + -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} + -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} + -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_funcidx_module: `%%`(module, funcidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_dataidx_funcs: `%%`(func*, dataidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func*{func <- `func*`}, var_0.DATAS_free) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, var_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, localidx*{localidx <- `localidx*`}, var_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES{`deftype*` : deftype*} deftype*, + RECS{`subtype*` : subtype*} subtype*, + TAGS{`tagtype*` : tagtype*} tagtype*, + GLOBALS{`globaltype*` : globaltype*} globaltype*, + MEMS{`memtype*` : memtype*} memtype*, + TABLES{`tabletype*` : tabletype*} tabletype*, + FUNCS{`deftype*` : deftype*} deftype*, + DATAS{`datatype*` : datatype*} datatype*, + ELEMS{`elemtype*` : elemtype*} elemtype*, + LOCALS{`localtype*` : localtype*} localtype*, + LABELS{`resulttype*` : resulttype*} resulttype*, + RETURN{`resulttype?` : resulttype?} resulttype?, + REFS{`funcidx*` : funcidx*} funcidx* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : subtype*, var_2 : tagtype*, var_3 : globaltype*, var_4 : memtype*, var_5 : tabletype*, var_6 : deftype*, var_7 : datatype*, var_8 : elemtype*, var_9 : localtype*, var_10 : resulttype*, var_11 : resulttype?, var_12 : funcidx*}: + `%`({TYPES var_0, RECS var_1, TAGS var_2, GLOBALS var_3, MEMS var_4, TABLES var_5, FUNCS var_6, DATAS var_7, ELEMS var_8, LOCALS var_9, LABELS var_10, RETURN var_11, REFS var_12}) + -- (wf_subtype: `%`(var_1))*{var_1 <- var_1} + -- (wf_typeuse: `%`(var_2))*{var_2 <- var_2} + -- (wf_globaltype: `%`(var_3))*{var_3 <- var_3} + -- (wf_memtype: `%`(var_4))*{var_4 <- var_4} + -- (wf_tabletype: `%`(var_5))*{var_5 <- var_5} + -- (wf_reftype: `%`(var_8))*{var_8 <- var_8} + -- (wf_localtype: `%`(var_9))*{var_9 <- var_9} + -- (wf_uN: `%%`(32, var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*}: + `%%%%`(C, [x_1] ++ x*{x <- `x*`}, [], C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_2{C : context, lct_1 : localtype, `lct*` : localtype*}: + `%%%%`(C, [], [lct_1] ++ lct*{lct <- `lct*`}, C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_3{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context}: + `%%%%`(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt*{dt <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt*{dt <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- where dt'*{dt' <- `dt'*`} = var_1 {dt', `dt'*`} +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_valtype: `%%%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_deftype: `%%%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- where dt'*{dt' <- `dt'*`} = var_1 {dt', `dt'*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_externtype: `%%%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidxnat = + | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidxnat: `%`(oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidxnat_case_0{typeidx : typeidx, nat : nat}: + `%`(OK_oktypeidxnat(typeidx, nat)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, var_0 : comptype}: + `%~~%`(deftype, comptype) + -- fun_expanddt: `%%`(deftype, var_0) + -- wf_comptype: `%`(comptype) + -- if (var_0 = comptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{rectype : rectype, n : n, x : uN, i : nat}(_DEF_typeuse(rectype, n), x, i) = true + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeidx : uN, x : uN, i : nat}(_IDX_typeuse(typeidx), x, i) = ($proj_uN_0(typeidx).0 < $proj_uN_0(x).0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, x : uN, i : nat}(REC_typeuse(j), x, i) = (j < i) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation fun_unrollht: `%%%`(context, heaptype, subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht_case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht_case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht_case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, $valtype_numtype(numtype)) + -- wf_context: `%`(C) + -- Numtype_ok: `%|-%:OK`(C, numtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, $valtype_vectype(vectype)) + -- wf_context: `%`(C) + -- Vectype_ok: `%|-%:OK`(C, vectype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, $valtype_reftype(reftype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + -- Reftype_ok: `%|-%:OK`(C, reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + -- if (C.RECS_context[i] = st) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- wf_context: `%`(C) + -- Deftype_ok: `%|-%:OK`(C, deftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- Valtype_ok: `%|-%:OK`(C, valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- wf_context: `%`(C) + -- Packtype_ok: `%|-%:OK`(C, packtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- (if (var_0 = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `x'*` <- `x'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 + rule _rec2{C : context, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) + -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 + rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- (fun_unrollht: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:91.1-91.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 + rule empty{C : context, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 + rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:95.1-95.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) + -- wf_context: `%`(C) + -- if (var_0 = var_1) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_unrolldt: `%%`(deftype_1, var_0) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- wf_context: `%`(C) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 + rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- wf_context: `%`(C) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- wf_context: `%`(C) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- wf_context: `%`(C) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- Expand: `%~~%`(deftype, comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- wf_context: `%`(C) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation fun_default_: `%%`(valtype, val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%%`(I32_valtype, ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_1: + `%%`(I64_valtype, ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_4: + `%%`(V128_valtype, ?(VCONST_val(V128_vectype, `%`_vec_(0)))) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(REF.NULL_val(ht))) + -- wf_val: `%`(REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?()) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_7: + `%%`(BOT_valtype, ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype, var_0 : val?}: + `|-%DEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) + -- wf_valtype: `%`(t) + -- if (var_0 =/= ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size($numtype_addrtype(at)))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation fun_is_packtype: `%%`(storagetype, bool) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt = $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule ref.null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule ref.func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if (x <- C.REFS_context) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule ref.i31{C : context}: + `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule ref.is_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule ref.as_non_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule ref.eq{C : context}: + `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule ref.test{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule ref.cast{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule i31.get{C : context, sx : sx}: + `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: + `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: + `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- `var_0*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 + rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> var_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`(var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 + rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} = ?()) <=> var_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule array.set{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule array.len{C : context}: + `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule array.fill{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule local.get{C : context, x : idx, t : valtype}: + `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule local.set{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule local.tee{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule global.set{C : context, x : idx, t : valtype}: + `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule elem.drop{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule data.drop{C : context, x : idx}: + `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*, var_0 : dim}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- `i*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- fun_dim: `%%`(sh, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- fun_dim: `%%`(sh, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`(var_0, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype, var_0 : val?}: + `|-%NONDEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) + -- wf_valtype: `%`(t) + -- if (var_0 = ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.null{C : context, ht : heaptype}: + `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.i31{C : context}: + `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.func{C : context, x : idx}: + `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new_default{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_default{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_fixed{C : context, x : idx, n : n}: + `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule any.convert_extern{C : context}: + `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule extern.convert_any{C : context}: + `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule global.get{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- fun_rolldt: `%%%`(x, rectype, var_0) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = var_0) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- fun_clos_externtype: `%%%`(C, xt, var_0) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}: + `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, var_0 : funcidx*}: + `%%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), []), var_0) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) + -- fun_funcidx_nonfuncs: `%%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) + -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- if (x*{x <- `x*`} = var_1) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_signed_: `%%%`(N, nat, int) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inv_signed_: `%%%`(N, int, nat) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_zero: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) + -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) + -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) + -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_ieqz_: `%%%`(N, iN, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_ieqz__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 = 0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inez_: `%%%`(N, iN, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inez__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 < var_1)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 > var_1)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 <= var_1)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 >= var_1)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + -- if ($isize(Inn) = $fsize(F32_Fnn)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + -- if ($isize(Inn) = $fsize(F64_Fnn)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(half)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(ZERO_zero)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{}) {c, `c*`, `c**`} + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (c <- var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_num(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, vec_ : vec_}: + `%`(VCONST_vec(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax ref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + +def $ref_addrref(addrref) : ref + def $ref_addrref{x0 : u31}(REF.I31_NUM_addrref(x0)) = REF.I31_NUM_ref(x0) + def $ref_addrref{x0 : structaddr}(REF.STRUCT_ADDR_addrref(x0)) = REF.STRUCT_ADDR_ref(x0) + def $ref_addrref{x0 : arrayaddr}(REF.ARRAY_ADDR_addrref(x0)) = REF.ARRAY_ADDR_ref(x0) + def $ref_addrref{x0 : funcaddr}(REF.FUNC_ADDR_addrref(x0)) = REF.FUNC_ADDR_ref(x0) + def $ref_addrref{x0 : exnaddr}(REF.EXN_ADDR_addrref(x0)) = REF.EXN_ADDR_ref(x0) + def $ref_addrref{x0 : hostaddr}(REF.HOST_ADDR_addrref(x0)) = REF.HOST_ADDR_ref(x0) + def $ref_addrref{x0 : addrref}(REF.EXTERN_addrref(x0)) = REF.EXTERN_ref(x0) + +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(REF.I31_NUM_ref(x0)) = REF.I31_NUM_instr(x0) + def $instr_ref{x0 : structaddr}(REF.STRUCT_ADDR_ref(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_ref{x0 : arrayaddr}(REF.ARRAY_ADDR_ref(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_ref{x0 : funcaddr}(REF.FUNC_ADDR_ref(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_ref{x0 : exnaddr}(REF.EXN_ADDR_ref(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_ref{x0 : hostaddr}(REF.HOST_ADDR_ref(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_ref{x0 : addrref}(REF.EXTERN_ref(x0)) = REF.EXTERN_instr(x0) + def $instr_ref{x0 : heaptype}(REF.NULL_ref(x0)) = REF.NULL_instr(x0) + +def $val_ref(ref) : val + def $val_ref{x0 : u31}(REF.I31_NUM_ref(x0)) = REF.I31_NUM_val(x0) + def $val_ref{x0 : structaddr}(REF.STRUCT_ADDR_ref(x0)) = REF.STRUCT_ADDR_val(x0) + def $val_ref{x0 : arrayaddr}(REF.ARRAY_ADDR_ref(x0)) = REF.ARRAY_ADDR_val(x0) + def $val_ref{x0 : funcaddr}(REF.FUNC_ADDR_ref(x0)) = REF.FUNC_ADDR_val(x0) + def $val_ref{x0 : exnaddr}(REF.EXN_ADDR_ref(x0)) = REF.EXN_ADDR_val(x0) + def $val_ref{x0 : hostaddr}(REF.HOST_ADDR_ref(x0)) = REF.HOST_ADDR_val(x0) + def $val_ref{x0 : addrref}(REF.EXTERN_ref(x0)) = REF.EXTERN_val(x0) + def $val_ref{x0 : heaptype}(REF.NULL_ref(x0)) = REF.NULL_val(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_0{u31 : u31}: + `%`(REF.I31_NUM_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_1{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_2{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_3{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_4{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_5{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_6{addrref : addrref}: + `%`(REF.EXTERN_ref(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_7{heaptype : heaptype}: + `%`(REF.NULL_ref(heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) + | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(val*{val <- `val*`})) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE{tagtype : tagtype} tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE{globaltype : globaltype} globaltype, + VALUE{val : val} val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE{memtype : memtype} memtype, + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE{tabletype : tabletype} tabletype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE{deftype : deftype} deftype, + MODULE{moduleinst : moduleinst} moduleinst, + CODE{funccode : funccode} funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE{elemtype : elemtype} elemtype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, iN : iN}: + `%`(PACK_packval(packtype, iN)) + -- wf_uN: `%%`($psize(packtype), iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) + +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : heaptype}(REF.NULL_val(x0)) = REF.NULL_fieldval(x0) + def $fieldval_val{x0 : u31}(REF.I31_NUM_val(x0)) = REF.I31_NUM_fieldval(x0) + def $fieldval_val{x0 : structaddr}(REF.STRUCT_ADDR_val(x0)) = REF.STRUCT_ADDR_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(REF.ARRAY_ADDR_val(x0)) = REF.ARRAY_ADDR_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(REF.FUNC_ADDR_val(x0)) = REF.FUNC_ADDR_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(REF.EXN_ADDR_val(x0)) = REF.EXN_ADDR_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(REF.HOST_ADDR_val(x0)) = REF.HOST_ADDR_fieldval(x0) + def $fieldval_val{x0 : addrref}(REF.EXTERN_val(x0)) = REF.EXTERN_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_fieldval(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, vec_ : vec_}: + `%`(VCONST_fieldval(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{heaptype : heaptype}: + `%`(REF.NULL_fieldval(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3{u31 : u31}: + `%`(REF.I31_NUM_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{addrref : addrref}: + `%`(REF.EXTERN_fieldval(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, iN : iN}: + `%`(PACK_fieldval(packtype, iN)) + -- wf_uN: `%%`($psize(packtype), iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG{tagaddr : tagaddr} tagaddr, + FIELDS{`val*` : val*} val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS{`taginst*` : taginst*} taginst*, + GLOBALS{`globalinst*` : globalinst*} globalinst*, + MEMS{`meminst*` : meminst*} meminst*, + TABLES{`tableinst*` : tableinst*} tableinst*, + FUNCS{`funcinst*` : funcinst*} funcinst*, + DATAS{`datainst*` : datainst*} datainst*, + ELEMS{`eleminst*` : eleminst*} eleminst*, + STRUCTS{`structinst*` : structinst*} structinst*, + ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, + EXNS{`exninst*` : exninst*} exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`{store : store, frame : frame}(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, instr*{instr <- `instr*`})) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield_: `%%%`(storagetype, val, fieldval?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%%`(BOT_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%%`(V128_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%%`(F64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%%`(F32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%%`(I64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%%`(I32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_9{x0 : storagetype, x1 : val}: + `%%%`(x0, x1, ?()) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_0{addrref : addrref}: + `%%%%`(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_1{addrref : addrref, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_2{addrref : addrref}: + `%%%%`(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_3{addrref : addrref}: + `%%%%`(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_4{addrref : addrref}: + `%%%%`(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_5{addrref : addrref}: + `%%%%`(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_6{addrref : addrref}: + `%%%%`(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_42{u31 : u31}: + `%%%%`(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_43{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_44{u31 : u31}: + `%%%%`(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_45{u31 : u31}: + `%%%%`(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_46{u31 : u31}: + `%%%%`(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_47{u31 : u31}: + `%%%%`(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_48{u31 : u31}: + `%%%%`(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_49{heaptype_0 : heaptype}: + `%%%%`(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_50{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_51{heaptype_0 : heaptype}: + `%%%%`(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_52{heaptype_0 : heaptype}: + `%%%%`(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_53{heaptype_0 : heaptype}: + `%%%%`(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_54{heaptype_0 : heaptype}: + `%%%%`(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_55{heaptype_0 : heaptype}: + `%%%%`(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_56{vectype : vectype, vec_ : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_57{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_58{vectype : vectype, vec_ : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_59{vectype : vectype, vec_ : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_60{vectype : vectype, vec_ : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_61{vectype : vectype, vec_ : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_62{vectype : vectype, vec_ : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{numtype : numtype, num_ : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_64{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_65{numtype : numtype, num_ : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_66{numtype : numtype, num_ : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_67{numtype : numtype, num_ : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{numtype : numtype, num_ : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_69{numtype : numtype, num_ : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_72{x0 : storagetype, x1 : sx?, x2 : fieldval}: + `%%%%`(x0, x1, x2, ?()) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_local: `%%%%`(state, localidx, val, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_local_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_global: `%%%%`(state, globalidx, val, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_global_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_table_case_0{s : store, f : frame, x : uN, i : nat, r : ref}: + `%%%%%`(`%;%`_state(s, f), x, i, r, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_tableinst_case_0{s : store, f : frame, x : uN, ti : tableinst}: + `%%%%`(`%;%`_state(s, f), x, ti, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_mem_case_0{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}: + `%%%%%%`(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_meminst_case_0{s : store, f : frame, x : uN, mi : meminst}: + `%%%%`(`%;%`_state(s, f), x, mi, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_elem_case_0{s : store, f : frame, x : uN, `r*` : ref*}: + `%%%%`(`%;%`_state(s, f), x, r*{r <- `r*`}, `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_data_case_0{s : store, f : frame, x : uN, `b*` : byte*}: + `%%%%`(`%;%`_state(s, f), x, b*{b <- `b*`}, `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_struct_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(`%;%`_state(s, f), a, i, fv, `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_array_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(`%;%`_state(s, f), a, i, fv, `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_structinst: `%%%`(state, structinst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_structinst_case_0{s : store, f : frame, `si*` : structinst*}: + `%%%`(`%;%`_state(s, f), si*{si <- `si*`}, `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_arrayinst_case_0{s : store, f : frame, `ai*` : arrayinst*}: + `%%%`(`%;%`_state(s, f), ai*{ai <- `ai*`}, `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_exninst: `%%%`(state, exninst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_exninst_case_0{s : store, f : frame, `exn*` : exninst*}: + `%%%`(`%;%`_state(s, f), exn*{exn <- `exn*`}, `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%%`(meminst, n, ?(meminst')) + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 + rule null{s : store, ht : heaptype, ht' : heaptype}: + `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 + rule i31{s : store, i : u31}: + `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + -- if (s.EXNS_store[a] = exn) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 + rule host{s : store, a : addr}: + `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 + rule extern{s : store, addrref : addrref}: + `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + -- Num_ok: `%|-%:%`(s, num, nt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + -- Vec_ok: `%|-%:%`(s, vec, vt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- Ref_ok: `%|-%:%`(s, ref, rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + -- if (s.TAGS_store[a] = taginst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (s.GLOBALS_store[a] = globalinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + -- if (s.MEMS_store[a] = meminst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (s.TABLES_store[a] = tableinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- if (s.FUNCS_store[a] = funcinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, `dt*` : deftype*, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if ($proj_uN_0(l).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + -- if ($proj_uN_0(l).0 > 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.tee{val : val, x : idx}: + `%~>%`([$instr_val(val) LOCAL.TEE_instr(x)], [$instr_val(val) $instr_val(val) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.i31{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref, ht : heaptype}: + `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref, ht : heaptype}: + `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: + `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) + -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- if (ref_1 = ref_2) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{ht : heaptype, sx : sx}: + `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new{val : val, n : n, x : idx}: + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{addrref : addrref}: + `%~>%`([$instr_addrref(addrref) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{addrref : addrref}: + `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [$instr_addrref(addrref)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if (!($proj_num__0(c)) = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- fun_inez_: `%%%`($vsize(V128_vectype), c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if (!($proj_num__0(c)) = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_1*` : uN*, var_0 : nat}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_1))*{var_1 <- `var_1*`, i <- `i*`} + -- fun_prod: `%%`($proj_uN_0(var_1).0*{var_1 <- `var_1*`}, var_0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if (!($proj_num__0(c)) = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_, var_0 : lane_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(Lnn, c_1, var_0) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), var_0^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_, var_0 : lane_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(Lnn, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = var_0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t?{t <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val?*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ var_0*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ var_0*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) + -- if ($local(z, x) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule global.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) + -- if ($global(z, x).VALUE_globalinst = val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} + -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[(($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- fun_memarg0: `%`(var_0) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null-idx`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr($heaptype_deftype($type(z, x)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr($heaptype_deftype($type(z, x)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.func{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [$instr_ref(ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val?*}: + `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (var_0 = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val?}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!(var_0))]) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype, var_1 : valtype, var_0 : val?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (var_0 = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!(var_0))]) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) var_0 ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- fun_add_exninst: `%%%`(z, [exn], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 + rule local.set{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, val, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 + rule global.set{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, val, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (ti = !(var_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 + rule elem.drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($mem(z, x), n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (mi = !(var_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 + rule data.drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 + rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config(var_0, [REF.STRUCT_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`, zt <- `zt*`} + -- fun_add_structinst: `%%%`(z, [si], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 + rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(var_0, [])) + -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, !(var_1), var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 + rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config(var_0, [REF.ARRAY_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 + rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_packfield_: `%%%`(zt, val, var_1) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, !(var_1), var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'*{type' <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype')*{deftype' <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'*{type' <- `type'*`}, var_0) + -- wf_uN: `%%`(32, x) + -- where deftype'*{deftype' <- `deftype'*`} = var_0 {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} + -- if (deftype*{deftype <- `deftype*`} = var_1) + -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) + -- if (taginst = {TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- fun_alloctags: `%%%`(s_1, tagtype'*{tagtype' <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ja) = var_0 {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = var_1 {ja', `ja'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + -- if (globalinst = {TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- fun_allocglobals: `%%%%`(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ga) = var_0 {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = var_1 {ga', `ga'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- fun_allocmems: `%%%`(s_1, memtype'*{memtype' <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ma) = var_0 {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = var_1 {ma', `ma'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- fun_alloctables: `%%%%`(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ta) = var_0 {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = var_1 {s_2, ta', `ta'*`} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- fun_allocfuncs: `%%%%%`(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, fa) = var_0 {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = var_1 {fa', `fa'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte*{byte <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) + -- if (datainst = {BYTES byte*{byte <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- fun_allocdatas: `%%%%`(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b*{b <- `b*`}, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, da) = var_0 {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = var_1 {da', `da'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref*{ref <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) + -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- fun_allocelems: `%%%%`(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref*{ref <- `ref*`}, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ea) = var_0 {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = var_1 {ea', `ea'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: + `%%%`(moduleinst, export*{export <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: + `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, (s_7, moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`}, var_18) + -- fun_allocfuncs: `%%%%%`(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}, var_17) + -- (fun_subst_all_reftype: `%%%`(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}, var_14) + -- (fun_subst_all_tabletype: `%%%`(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T*{ref_T <- `ref_T*`}, var_12) + -- (fun_subst_all_memtype: `%%%`(memtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- (fun_subst_all_globaltype: `%%%`(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G*{val_G <- `val_G*`}, var_8) + -- (fun_subst_all_tagtype: `%%%`(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_0) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = var_0 {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = var_1 {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = var_2 {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = var_3 {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = var_4 {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = var_5 {dt, `dt*`} + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) + -- where (s_1, aa*{aa <- `aa*`}) = var_6 {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = var_8 {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = var_10 {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = var_12 {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = var_14 {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = var_15 {ea, `ea*`, s_6} + -- if ((s_7, fa*{fa <- `fa*`}) = var_17) + -- if (xi*{xi <- `xi*`} = var_18) + -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_rundata_: `%%%`(dataidx, data, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_0{x : uN, `b*` : byte*, n : nat}: + `%%%`(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode), []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_1{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_runelem_: `%%%`(elemidx, elem, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_0{x : uN, rt : reftype, `e*` : expr*, n : nat}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode), []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_1{x : uN, rt : reftype, `e*` : expr*, n : nat}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode), [ELEM.DROP_instr(x)]) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_2{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}, (z', [val] ++ val'*{val' <- `val'*`})) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = var_0 {a, s'} + -- where (z', val'*{val' <- `val'*`}) = var_1 {val', `val'*`, z'} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*, `var_6*` : instr**, `var_5*` : instr**, var_4 : (store, moduleinst), var_3 : (state, val*), var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: + `%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E], var_6))^(i_E<|elem*{elem <- `elem*`}|){var_6 <- `var_6*`, i_E <- `i_E*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D), data*{data <- `data*`}[i_D], var_5))^(i_D<|data*{data <- `data*`}|){var_5 <- `var_5*`, i_D <- `i_D*`} + -- fun_allocmodule: `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_4) + -- fun_evalglobals: `%%%%`(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}, var_3) + -- fun_funcsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_0) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- where (z', val_G*{val_G <- `val_G*`}) = var_3 {val_G, `val_G*`, z'} + -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} + -- where (s', moduleinst) = var_4 {moduleinst, s'} + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, var_5^(i_D<|data*{data <- `data*`}|){var_5 <- `var_5*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, var_6^(i_E<|elem*{elem <- `elem*`}|){var_6 <- `var_6*`})) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val*{val <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} + diff --git a/spectec/test-middlend/specification.exp/12-sideconditions.il b/spectec/test-middlend/specification.exp/12-sideconditions.il new file mode 100644 index 0000000000..e96a773d3a --- /dev/null +++ b/spectec/test-middlend/specification.exp/12-sideconditions.il @@ -0,0 +1,18119 @@ + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax N = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax M = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax K = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax n = nat + +;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +syntax m = nat + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +def $min(nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = (if (i <= j) then i else j) + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'*{n' <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'*{n' <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $opt_(syntax X, X*) : X?? + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?(?()) + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +def $concat_(syntax X, X**) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + def $concat_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +def $concatn_(syntax X, X**, nat : nat) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + def $concatn_{syntax X, n : nat}(syntax X, [], n) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + def $concatn_{syntax X, `w*` : X*, n : nat, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $concatopt_(syntax X, X?*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concat_(syntax X, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +def $inv_concatn_(syntax X, nat : nat, X*) : X** + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +def $disjoint_(syntax X, X*) : bool + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + def $disjoint_{syntax X}(syntax X, []) = true + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +def $setminus1_(syntax X, X : X, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = (if (w = w_1) then [] else $setminus1_(syntax X, w, w'*{w' <- `w'*`})) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +def $setminus_(syntax X, X*, X*) : X* + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +def $setproduct2_(syntax X, X : X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +def $setproduct1_(syntax X, X*, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) +} + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +rec { + +;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +def $setproduct_(syntax X, X**) : X** + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + def $setproduct_{syntax X}(syntax X, []) = [[]] + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) +} + +;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +def $ND : bool + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax bit = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_bit: `%`(bit) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule bit_case_0{i : nat}: + `%`(`%`_bit(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax byte = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_byte_0(x : byte) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_byte_0{v_num_0 : nat}(`%`_byte(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_byte: `%`(byte) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule byte_case_0{i : nat}: + `%`(`%`_byte(i)) + -- if ((i >= 0) /\ (i <= 255)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax uN = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_uN_0(x : uN) : (nat) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_uN_0{v_num_0 : nat}(`%`_uN(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_uN: `%%`(N, uN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule uN_case_0{N : N, i : nat}: + `%%`(N, `%`_uN(i)) + -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax sN = + | `%`{i : int}(i : int) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_sN: `%%`(N, sN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule sN_case_0{N : N, i : int}: + `%%`(N, `%`_sN(i)) + -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax iN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u8 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u16 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u31 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u32 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax u64 = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax s33 = sN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i32 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $signif(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = ?(23) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $expon(N : N) : nat? + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = ?(8) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $M(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : nat}(N) = !($signif(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $E(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : nat}(N) = !($expon(N)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax exp = int + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fNmag = + | NORM{m : m, exp : exp}(m : m, exp : exp) + | SUBNORM{m : m, exp : exp}(m : m) + | INF + | NAN{m : m}(m : m) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fNmag: `%%`(N, fNmag) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_0{N : N, m : m, exp : exp}: + `%%`(N, NORM_fNmag(m, exp)) + -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_1{N : N, m : m, exp : exp}: + `%%`(N, SUBNORM_fNmag(m)) + -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_2{N : N}: + `%%`(N, INF_fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fNmag_case_3{N : N, m : m}: + `%%`(N, NAN_fNmag(m)) + -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fN = + | POS{fNmag : fNmag}(fNmag : fNmag) + | NEG{fNmag : fNmag}(fNmag : fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_fN: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_0{N : N, fNmag : fNmag}: + `%%`(N, POS_fN(fNmag)) + -- wf_fNmag: `%%`(N, fNmag) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fN_case_1{N : N, fNmag : fNmag}: + `%%`(N, NEG_fN(fNmag)) + -- wf_fNmag: `%%`(N, fNmag) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f32 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax f64 = fN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fzero: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fzero_case_0{N : nat}: + `%%`(N, POS_fN(SUBNORM_fNmag(0))) + -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fnat: `%%%`(N, nat, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fnat_case_0{N : nat, n : nat}: + `%%%`(N, n, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_fone: `%%`(N, fN) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_fone_case_0{N : nat}: + `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $canon_(N : N) : nat + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax vN = uN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax v128 = vN + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax list{syntax X}(syntax X) = + | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + -- if (|X*{X <- `X*`}| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $proj_list_0(syntax X, x : list(syntax X)) : (X*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $proj_list_0{syntax X, v_X_list_0 : X*}(syntax X, `%`_list(v_X_list_0)) = (v_X_list_0) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax char = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_char: `%`(char) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule char_case_0{i : nat}: + `%`(`%`_char(i)) + -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $utf8(char*) : byte* + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax name = + | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_name: `%`(name) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule name_case_0{`char*` : char*}: + `%`(`%`_name(char*{char <- `char*`})) + -- (wf_char: `%`(char))*{char <- `char*`} + -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax idx = u32 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax laneidx = u8 + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax typeidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax funcidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax globalidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tableidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax memidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax tagidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax elemidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax dataidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax labelidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax localidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax fieldidx = idx + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax externidx = + | FUNC{funcidx : funcidx}(funcidx : funcidx) + | GLOBAL{globalidx : globalidx}(globalidx : globalidx) + | TABLE{tableidx : tableidx}(tableidx : tableidx) + | MEM{memidx : memidx}(memidx : memidx) + | TAG{tagidx : tagidx}(tagidx : tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_externidx: `%`(externidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_0{funcidx : funcidx}: + `%`(FUNC_externidx(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_1{globalidx : globalidx}: + `%`(GLOBAL_externidx(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_2{tableidx : tableidx}: + `%`(TABLE_externidx(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_3{memidx : memidx}: + `%`(MEM_externidx(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule externidx_case_4{tagidx : tagidx}: + `%`(TAG_externidx(tagidx)) + -- wf_uN: `%%`(32, tagidx) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax free = +{ + TYPES{`typeidx*` : typeidx*} typeidx*, + FUNCS{`funcidx*` : funcidx*} funcidx*, + GLOBALS{`globalidx*` : globalidx*} globalidx*, + TABLES{`tableidx*` : tableidx*} tableidx*, + MEMS{`memidx*` : memidx*} memidx*, + ELEMS{`elemidx*` : elemidx*} elemidx*, + DATAS{`dataidx*` : dataidx*} dataidx*, + LOCALS{`localidx*` : localidx*} localidx*, + LABELS{`labelidx*` : labelidx*} labelidx* +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation wf_free: `%`(free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule free_case_{var_0 : typeidx*, var_1 : funcidx*, var_2 : globalidx*, var_3 : tableidx*, var_4 : memidx*, var_5 : elemidx*, var_6 : dataidx*, var_7 : localidx*, var_8 : labelidx*}: + `%`({TYPES var_0, FUNCS var_1, GLOBALS var_2, TABLES var_3, MEMS var_4, ELEMS var_5, DATAS var_6, LOCALS var_7, LABELS var_8}) + -- (wf_uN: `%%`(32, var_0))*{var_0 <- var_0} + -- (wf_uN: `%%`(32, var_1))*{var_1 <- var_1} + -- (wf_uN: `%%`(32, var_2))*{var_2 <- var_2} + -- (wf_uN: `%%`(32, var_3))*{var_3 <- var_3} + -- (wf_uN: `%%`(32, var_4))*{var_4 <- var_4} + -- (wf_uN: `%%`(32, var_5))*{var_5 <- var_5} + -- (wf_uN: `%%`(32, var_6))*{var_6 <- var_6} + -- (wf_uN: `%%`(32, var_7))*{var_7 <- var_7} + -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_opt: `%%`(free?, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_opt_case_1{free : free}: + `%%`(?(free), free) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'*{free' <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_typeidx: `%%`(typeidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_typeidx_case_0{typeidx : uN}: + `%%`(typeidx, {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_funcidx: `%%`(funcidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_funcidx_case_0{funcidx : uN}: + `%%`(funcidx, {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_globalidx: `%%`(globalidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_globalidx_case_0{globalidx : uN}: + `%%`(globalidx, {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_tableidx: `%%`(tableidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_tableidx_case_0{tableidx : uN}: + `%%`(tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_memidx: `%%`(memidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_memidx_case_0{memidx : uN}: + `%%`(memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_elemidx: `%%`(elemidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_elemidx_case_0{elemidx : uN}: + `%%`(elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_dataidx: `%%`(dataidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_dataidx_case_0{dataidx : uN}: + `%%`(dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_localidx: `%%`(localidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_localidx_case_0{localidx : uN}: + `%%`(localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_labelidx: `%%`(labelidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_labelidx_case_0{labelidx : uN}: + `%%`(labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +relation fun_free_externidx: `%%`(externidx, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_0{funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_1{globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_2{tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_3{memidx : uN, var_0 : free}: + `%%`(MEM_externidx(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_4{tagidx : uN}: + `%%`(TAG_externidx(tagidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax null = + | NULL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax addrtype = + | I32 + | I64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax numtype = + | I32 + | I64 + | F32 + | F64 + +def $numtype_addrtype(addrtype) : numtype + def $numtype_addrtype(I32_addrtype) = I32_numtype + def $numtype_addrtype(I64_addrtype) = I64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax vectype = + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax consttype = + | I32 + | I64 + | F32 + | F64 + | V128 + +def $consttype_numtype(numtype) : consttype + def $consttype_numtype(I32_numtype) = I32_consttype + def $consttype_numtype(I64_numtype) = I64_consttype + def $consttype_numtype(F32_numtype) = F32_consttype + def $consttype_numtype(F64_numtype) = F64_consttype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax absheaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax mut = + | MUT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax final = + | FINAL + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +syntax typeuse = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | REC{n : n}(n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +syntax heaptype = + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +syntax valtype = + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | BOT + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +syntax storagetype = + | BOT + | I32 + | I64 + | F32 + | F64 + | V128 + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | I8 + | I16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +syntax resulttype = list(syntax valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +syntax fieldtype = + | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +syntax comptype = + | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) + | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) + | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +syntax subtype = + | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +syntax rectype = + | REC{list : list(syntax subtype)}(list : list(syntax subtype)) +} + +def $heaptype_absheaptype(absheaptype) : heaptype + def $heaptype_absheaptype(ANY_absheaptype) = ANY_heaptype + def $heaptype_absheaptype(EQ_absheaptype) = EQ_heaptype + def $heaptype_absheaptype(I31_absheaptype) = I31_heaptype + def $heaptype_absheaptype(STRUCT_absheaptype) = STRUCT_heaptype + def $heaptype_absheaptype(ARRAY_absheaptype) = ARRAY_heaptype + def $heaptype_absheaptype(NONE_absheaptype) = NONE_heaptype + def $heaptype_absheaptype(FUNC_absheaptype) = FUNC_heaptype + def $heaptype_absheaptype(NOFUNC_absheaptype) = NOFUNC_heaptype + def $heaptype_absheaptype(EXN_absheaptype) = EXN_heaptype + def $heaptype_absheaptype(NOEXN_absheaptype) = NOEXN_heaptype + def $heaptype_absheaptype(EXTERN_absheaptype) = EXTERN_heaptype + def $heaptype_absheaptype(NOEXTERN_absheaptype) = NOEXTERN_heaptype + def $heaptype_absheaptype(BOT_absheaptype) = BOT_heaptype + +def $valtype_addrtype(addrtype) : valtype + def $valtype_addrtype(I32_addrtype) = I32_valtype + def $valtype_addrtype(I64_addrtype) = I64_valtype + +def $storagetype_consttype(consttype) : storagetype + def $storagetype_consttype(I32_consttype) = I32_storagetype + def $storagetype_consttype(I64_consttype) = I64_storagetype + def $storagetype_consttype(F32_consttype) = F32_storagetype + def $storagetype_consttype(F64_consttype) = F64_storagetype + def $storagetype_consttype(V128_consttype) = V128_storagetype + +def $storagetype_numtype(numtype) : storagetype + def $storagetype_numtype(I32_numtype) = I32_storagetype + def $storagetype_numtype(I64_numtype) = I64_storagetype + def $storagetype_numtype(F32_numtype) = F32_storagetype + def $storagetype_numtype(F64_numtype) = F64_storagetype + +def $valtype_numtype(numtype) : valtype + def $valtype_numtype(I32_numtype) = I32_valtype + def $valtype_numtype(I64_numtype) = I64_valtype + def $valtype_numtype(F32_numtype) = F32_valtype + def $valtype_numtype(F64_numtype) = F64_valtype + +def $heaptype_typeuse(typeuse) : heaptype + def $heaptype_typeuse{x0 : typeidx}(_IDX_typeuse(x0)) = _IDX_heaptype(x0) + def $heaptype_typeuse{x0 : rectype, x1 : n}(_DEF_typeuse(x0, x1)) = _DEF_heaptype(x0, x1) + def $heaptype_typeuse{x0 : n}(REC_typeuse(x0)) = REC_heaptype(x0) + +def $storagetype_valtype(valtype) : storagetype + def $storagetype_valtype(I32_valtype) = I32_storagetype + def $storagetype_valtype(I64_valtype) = I64_storagetype + def $storagetype_valtype(F32_valtype) = F32_storagetype + def $storagetype_valtype(F64_valtype) = F64_storagetype + def $storagetype_valtype(V128_valtype) = V128_storagetype + def $storagetype_valtype{x0 : null?, x1 : heaptype}(REF_valtype(x0, x1)) = REF_storagetype(x0, x1) + def $storagetype_valtype(BOT_valtype) = BOT_storagetype + +def $storagetype_vectype(vectype) : storagetype + def $storagetype_vectype(V128_vectype) = V128_storagetype + +def $valtype_vectype(vectype) : valtype + def $valtype_vectype(V128_vectype) = V128_valtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 +relation wf_typeuse: `%`(typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_0{typeidx : typeidx}: + `%`(_IDX_typeuse(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_1{rectype : rectype, n : n}: + `%`(_DEF_typeuse(rectype, n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.8-37.15 + rule typeuse_case_2{n : n}: + `%`(REC_typeuse(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 +relation wf_heaptype: `%`(heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_0: + `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_1: + `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_2: + `%`(I31_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_3: + `%`(STRUCT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_4: + `%`(ARRAY_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_5: + `%`(NONE_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_6: + `%`(FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_7: + `%`(NOFUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_8: + `%`(EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_9: + `%`(NOEXN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_10: + `%`(EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_11: + `%`(NOEXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_12: + `%`(BOT_heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_13{typeidx : typeidx}: + `%`(_IDX_heaptype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_14{n : n}: + `%`(REC_heaptype(n)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.8-43.16 + rule heaptype_case_15{rectype : rectype, n : n}: + `%`(_DEF_heaptype(rectype, n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 +relation wf_valtype: `%`(valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_0: + `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_1: + `%`(I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_2: + `%`(F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_3: + `%`(F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_4: + `%`(V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_5{`null?` : null?, heaptype : heaptype}: + `%`(REF_valtype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.8-51.15 + rule valtype_case_6: + `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 +relation wf_storagetype: `%`(storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_0: + `%`(BOT_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_1: + `%`(I32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_2: + `%`(I64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_3: + `%`(F32_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_4: + `%`(F64_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_5: + `%`(V128_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_6{`null?` : null?, heaptype : heaptype}: + `%`(REF_storagetype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_7: + `%`(I8_storagetype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.8-92.19 + rule storagetype_case_8: + `%`(I16_storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 +relation wf_fieldtype: `%`(fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.8-112.17 + rule fieldtype_case_0{`mut?` : mut?, storagetype : storagetype}: + `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) + -- wf_storagetype: `%`(storagetype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 +relation wf_comptype: `%`(comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_0{list : list(syntax fieldtype)}: + `%`(STRUCT_comptype(list)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_1{fieldtype : fieldtype}: + `%`(ARRAY_comptype(fieldtype)) + -- wf_fieldtype: `%`(fieldtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.8-114.16 + rule comptype_case_2{resulttype : resulttype, var_0 : resulttype}: + `%`(`FUNC%->%`_comptype(resulttype, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 +relation wf_subtype: `%`(subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.8-119.15 + rule subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}: + `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + -- (wf_typeuse: `%`(typeuse))*{typeuse <- `typeuse*`} + -- wf_comptype: `%`(comptype) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax deftype = + | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + +def $heaptype_deftype(deftype) : heaptype + def $heaptype_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_heaptype(x0, x1) + +def $typeuse_deftype(deftype) : typeuse + def $typeuse_deftype{x0 : rectype, x1 : n}(_DEF_deftype(x0, x1)) = _DEF_typeuse(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax typevar = + | _IDX{typeidx : typeidx}(typeidx : typeidx) + | REC{n : n}(n : n) + +def $typeuse_typevar(typevar) : typeuse + def $typeuse_typevar{x0 : typeidx}(_IDX_typevar(x0)) = _IDX_typeuse(x0) + def $typeuse_typevar{x0 : n}(REC_typevar(x0)) = REC_typeuse(x0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_typevar: `%`(typevar) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_0{typeidx : typeidx}: + `%`(_IDX_typevar(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule typevar_case_1{n : n}: + `%`(REC_typevar(n)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax reftype = + | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + +def $storagetype_reftype(reftype) : storagetype + def $storagetype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_storagetype(x0, x1) + +def $valtype_reftype(reftype) : valtype + def $valtype_reftype{x0 : null?, x1 : heaptype}(REF_reftype(x0, x1)) = REF_valtype(x0, x1) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_reftype: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule reftype_case_0{`null?` : null?, heaptype : heaptype}: + `%`(REF_reftype(null?{null <- `null?`}, heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Inn = addrtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Fnn = + | F32 + | F64 + +def $numtype_Fnn(Fnn) : numtype + def $numtype_Fnn(F32_Fnn) = F32_numtype + def $numtype_Fnn(F64_Fnn) = F64_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Vnn = vectype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Cnn = + | I32 + | I64 + | F32 + | F64 + | V128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_ANYREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EQREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_I31REF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_STRUCTREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_ARRAYREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_FUNCREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EXNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_EXTERNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLFUNCREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLEXNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_NULLEXTERNREF: `%`(reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax packtype = + | I8 + | I16 + +def $storagetype_packtype(packtype) : storagetype + def $storagetype_packtype(I8_packtype) = I8_storagetype + def $storagetype_packtype(I16_packtype) = I16_storagetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax lanetype = + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 + +def $lanetype_Fnn(Fnn) : lanetype + def $lanetype_Fnn(F32_Fnn) = F32_lanetype + def $lanetype_Fnn(F64_Fnn) = F64_lanetype + +def $lanetype_addrtype(addrtype) : lanetype + def $lanetype_addrtype(I32_addrtype) = I32_lanetype + def $lanetype_addrtype(I64_addrtype) = I64_lanetype + +def $lanetype_numtype(numtype) : lanetype + def $lanetype_numtype(I32_numtype) = I32_lanetype + def $lanetype_numtype(I64_numtype) = I64_lanetype + def $lanetype_numtype(F32_numtype) = F32_lanetype + def $lanetype_numtype(F64_numtype) = F64_lanetype + +def $lanetype_packtype(packtype) : lanetype + def $lanetype_packtype(I8_packtype) = I8_lanetype + def $lanetype_packtype(I16_packtype) = I16_lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Pnn = packtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Jnn = + | I32 + | I64 + | I8 + | I16 + +def $lanetype_Jnn(Jnn) : lanetype + def $lanetype_Jnn(I32_Jnn) = I32_lanetype + def $lanetype_Jnn(I64_Jnn) = I64_lanetype + def $lanetype_Jnn(I8_Jnn) = I8_lanetype + def $lanetype_Jnn(I16_Jnn) = I16_lanetype + +def $Jnn_addrtype(addrtype) : Jnn + def $Jnn_addrtype(I32_addrtype) = I32_Jnn + def $Jnn_addrtype(I64_addrtype) = I64_Jnn + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax Lnn = lanetype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax limits = + | `[%..%]`{u64 : u64}(u64 : u64, u64?) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_limits: `%`(limits) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule limits_case_0{u64 : u64, var_0 : u64?}: + `%`(`[%..%]`_limits(u64, var_0)) + -- wf_uN: `%%`(64, u64) + -- (wf_uN: `%%`(64, var_0))?{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tagtype = typeuse + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax globaltype = + | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_globaltype: `%`(globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule globaltype_case_0{`mut?` : mut?, valtype : valtype}: + `%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax memtype = + | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_memtype: `%`(memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule memtype_case_0{addrtype : addrtype, limits : limits}: + `%`(`%%PAGE`_memtype(addrtype, limits)) + -- wf_limits: `%`(limits) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax tabletype = + | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_tabletype: `%`(tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype}: + `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- wf_limits: `%`(limits) + -- wf_reftype: `%`(reftype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax datatype = + | OK + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax elemtype = reftype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax externtype = + | TAG{tagtype : tagtype}(tagtype : tagtype) + | GLOBAL{globaltype : globaltype}(globaltype : globaltype) + | MEM{memtype : memtype}(memtype : memtype) + | TABLE{tabletype : tabletype}(tabletype : tabletype) + | FUNC{typeuse : typeuse}(typeuse : typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_externtype: `%`(externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_0{tagtype : tagtype}: + `%`(TAG_externtype(tagtype)) + -- wf_typeuse: `%`(tagtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_1{globaltype : globaltype}: + `%`(GLOBAL_externtype(globaltype)) + -- wf_globaltype: `%`(globaltype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_2{memtype : memtype}: + `%`(MEM_externtype(memtype)) + -- wf_memtype: `%`(memtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_3{tabletype : tabletype}: + `%`(TABLE_externtype(tabletype)) + -- wf_tabletype: `%`(tabletype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule externtype_case_4{typeuse : typeuse}: + `%`(FUNC_externtype(typeuse)) + -- wf_typeuse: `%`(typeuse) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +syntax moduletype = + | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation wf_moduletype: `%`(moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule moduletype_case_0{`externtype*` : externtype*, var_0 : externtype*}: + `%`(`%->%`_moduletype(externtype*{externtype <- `externtype*`}, var_0)) + -- (wf_externtype: `%`(externtype))*{externtype <- `externtype*`} + -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $IN(N : N) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $FN(N : N) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $JN(N : N) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $size(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(I64_numtype) = 64 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F32_numtype) = 32 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(F64_numtype) = 64 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsize(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(V128_vectype) = 128 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psize(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I8_packtype) = 8 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(I16_packtype) = 16 + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsize(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I32_lanetype) = $size(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I64_lanetype) = $size(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F32_lanetype) = $size(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(F64_lanetype) = $size(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I8_lanetype) = $psize(I8_packtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize(I16_lanetype) = $psize(I16_packtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $zsize(storagetype : storagetype) : nat? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I32_storagetype) = ?($size(I32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I64_storagetype) = ?($size(I64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F32_storagetype) = ?($size(F32_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(F64_storagetype) = ?($size(F64_numtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $isize(Inn : Inn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : addrtype}(Inn) = $size($numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsize(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $fsize(Fnn : Fnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size($numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_isize(nat : nat) : Inn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = ?(I32_Inn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = ?(I64_Inn) + def $inv_isize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsize(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) + def $inv_jsize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_fsize(nat : nat) : Fnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = ?(F32_Fnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = ?(F64_Fnn) + def $inv_fsize{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn1(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $sizenn2(numtype : numtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vsizenn(vectype : vectype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $psizenn(packtype : packtype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn1(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lsizenn2(lanetype : lanetype) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $jsizenn(Jnn : Jnn) : nat + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize($lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $inv_jsizenn(nat : nat) : Jnn? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) + def $inv_jsizenn{x0 : nat}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $lunpack(lanetype : lanetype) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I32_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I64_lanetype) = I64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F32_lanetype) = F32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(F64_lanetype) = F64_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I8_lanetype) = I32_numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack(I16_lanetype) = I32_numtype + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_unpack: `%%`(storagetype, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_1{`null?` : null?, heaptype : heaptype}: + `%%`(REF_storagetype(null?{null <- `null?`}, heaptype), REF_valtype(null?{null <- `null?`}, heaptype)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) + -- wf_valtype: `%`(I32_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $nunpack(storagetype : storagetype) : numtype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I32_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I64_storagetype) = ?(I64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F32_storagetype) = ?(F32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(F64_storagetype) = ?(F64_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I8_storagetype) = ?(I32_numtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack(I16_storagetype) = ?(I32_numtype) + def $nunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $vunpack(storagetype : storagetype) : vectype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack(V128_storagetype) = ?(V128_vectype) + def $vunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $cunpack(storagetype : storagetype) : consttype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?(I64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?(F32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?(F64_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(V128_storagetype) = ?(V128_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?(I32_consttype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I32_storagetype) = ?($consttype_numtype($lunpack(I32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I64_storagetype) = ?($consttype_numtype($lunpack(I64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F32_storagetype) = ?($consttype_numtype($lunpack(F32_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(F64_storagetype) = ?($consttype_numtype($lunpack(F64_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I8_storagetype) = ?($consttype_numtype($lunpack(I8_lanetype))) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack(I16_storagetype) = ?($consttype_numtype($lunpack(I16_lanetype))) + def $cunpack{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_diffrt: `%%%`(reftype, reftype, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_diffrt_case_0{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_diffrt_case_1{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $as_deftype(typeuse : typeuse) : deftype? + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt*{xt <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_1{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}: + `%%%%`(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}, $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_2{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}: + `%%%%`(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [], $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_3{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse}: + `%%%%`(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}, (if (tv = tv_1) then tu_1 else var_0)) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ([], [])) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}, ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- wf_typevar: `%`(_IDX_typevar(x)) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = var_0 {tu', `tu'*`, tv', `tv'*`} +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(REC_typeuse(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(_IDX_typeuse(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_typeuse(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_typeuse(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, BOT_valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- if (|`var_0*`| = |`ft*`|) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- if (|`var_1*`| = |`t_2*`|) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- if (|`var_0*`| = |`t_1*`|) + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`tu'*`|) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*), `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`st*`|) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} + -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} + -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = var_1 {tu', `tu'*`, tv', `tv'*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.6-358.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.6-358.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%PAGE`_memtype(at, lim)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TAG_externtype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(MEM_externtype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_externtype_case_4{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, FUNC_externtype($typeuse_deftype(var_0))) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(var_0))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- if (|`var_1*`| = |`xt_2*`|) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- if (|`var_0*`| = |`xt_1*`|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- wf_moduletype: `%`(`%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_subst_all_valtype_case_0{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*, var_0 : valtype}: + `%%%`(t, tu^n{tu <- `tu*`}, var_0) + -- fun_subst_valtype: `%%%%`(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.6-500.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.6-500.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- if (|`var_1*`| = |`typeuse*`|) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.6-501.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.6-501.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), var_0) + -- if (|`var_1*`| = |`subtype*`|) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.6-529.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.6-529.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) +} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tagtype: `%%`(tagtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_globaltype: `%%`(globaltype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_memtype: `%%`(memtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_memtype_case_0{addrtype : addrtype, limits : limits, var_0 : free}: + `%%`(`%%PAGE`_memtype(addrtype, limits), var_0) + -- fun_free_addrtype: `%%`(addrtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_tabletype: `%%`(tabletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_1 : free, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype, var_1) + -- fun_free_addrtype: `%%`(addrtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_datatype: `%%`(datatype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_datatype_case_0: + `%%`(OK_datatype, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_elemtype: `%%`(elemtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_externtype: `%%`(externtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_2{memtype : memtype, var_0 : free}: + `%%`(MEM_externtype(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +relation fun_free_moduletype: `%%`(moduletype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`}), var_0 +++ var_2) + -- if (|`var_3*`| = |`externtype_2*`|) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`externtype_1*`|) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax num_ = + | mk_num__0{Inn : Inn, var_x : iN}(Inn : Inn, var_x : iN) + | mk_num__1{Fnn : Fnn, var_x : fN}(Fnn : Fnn, var_x : fN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_num_: `%%`(numtype, num_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_0{numtype : numtype, Inn : Inn, var_x : iN}: + `%%`(numtype, mk_num__0_num_(Inn, var_x)) + -- wf_uN: `%%`($size($numtype_addrtype(Inn)), var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule num__case_1{numtype : numtype, Fnn : Fnn, var_x : fN}: + `%%`(numtype, mk_num__1_num_(Fnn, var_x)) + -- wf_fN: `%%`($sizenn($numtype_Fnn(Fnn)), var_x) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__0(var_x : num_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{Inn : Inn, var_x : iN}(mk_num__0_num_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__0{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_num__1(var_x : num_) : fN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{Fnn : Fnn, var_x : fN}(mk_num__1_num_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_num__1{var_x : num_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax pack_ = iN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lane_ = + | mk_lane__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) + | mk_lane__1{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) + | mk_lane__2{Jnn : Jnn, var_x : iN}(Jnn : Jnn, var_x : iN) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lane_: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_0{lanetype : lanetype, numtype : numtype, var_x : num_}: + `%%`(lanetype, mk_lane__0_lane_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (lanetype = $lanetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_1{lanetype : lanetype, packtype : packtype, var_x : pack_}: + `%%`(lanetype, mk_lane__1_lane_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (lanetype = $lanetype_packtype(packtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lane__case_2{lanetype : lanetype, Jnn : Jnn, var_x : iN}: + `%%`(lanetype, mk_lane__2_lane_(Jnn, var_x)) + -- wf_uN: `%%`($lsize($lanetype_Jnn(Jnn)), var_x) + -- if (lanetype = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__0(var_x : lane_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{numtype : numtype, var_x : num_}(mk_lane__0_lane_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__0{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__1(var_x : lane_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{packtype : packtype, var_x : pack_}(mk_lane__1_lane_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__1{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lane__2(var_x : lane_) : iN? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{Jnn : Jnn, var_x : iN}(mk_lane__2_lane_(Jnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lane__2{var_x : lane_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vec_ = vN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax lit_ = + | mk_lit__0{numtype : numtype, var_x : num_}(numtype : numtype, var_x : num_) + | mk_lit__1{vectype : vectype, var_x : vec_}(vectype : vectype, var_x : vec_) + | mk_lit__2{packtype : packtype, var_x : pack_}(packtype : packtype, var_x : pack_) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_lit_: `%%`(storagetype, lit_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_0{storagetype : storagetype, numtype : numtype, var_x : num_}: + `%%`(storagetype, mk_lit__0_lit_(numtype, var_x)) + -- wf_num_: `%%`(numtype, var_x) + -- if (storagetype = $storagetype_numtype(numtype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_1{storagetype : storagetype, vectype : vectype, var_x : vec_}: + `%%`(storagetype, mk_lit__1_lit_(vectype, var_x)) + -- wf_uN: `%%`($vsize(vectype), var_x) + -- if (storagetype = $storagetype_vectype(vectype)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule lit__case_2{storagetype : storagetype, packtype : packtype, var_x : pack_}: + `%%`(storagetype, mk_lit__2_lit_(packtype, var_x)) + -- wf_uN: `%%`($psize(packtype), var_x) + -- if (storagetype = $storagetype_packtype(packtype)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__0(var_x : lit_) : num_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{numtype : numtype, var_x : num_}(mk_lit__0_lit_(numtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__0{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__1(var_x : lit_) : vec_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{vectype : vectype, var_x : vec_}(mk_lit__1_lit_(vectype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__1{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_lit__2(var_x : lit_) : pack_? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{packtype : packtype, var_x : pack_}(mk_lit__2_lit_(packtype, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_lit__2{var_x : lit_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sz = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_sz_0(x : sz) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_sz_0{v_num_0 : nat}(`%`_sz(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_sz: `%`(sz) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule sz_case_0{i : nat}: + `%`(`%`_sz(i)) + -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax sx = + | U + | S + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Inn = + | CLZ + | CTZ + | POPCNT + | EXTEND{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_Inn: `%%`(Inn, unop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_0{Inn : Inn}: + `%%`(Inn, CLZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_1{Inn : Inn}: + `%%`(Inn, CTZ_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_2{Inn : Inn}: + `%%`(Inn, POPCNT_unop_Inn) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop_Inn_case_3{Inn : Inn, sz : sz}: + `%%`(Inn, EXTEND_unop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_Fnn = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax unop_ = + | mk_unop__0{Inn : Inn, var_x : unop_Inn}(Inn : Inn, var_x : unop_Inn) + | mk_unop__1{Fnn : Fnn, var_x : unop_Fnn}(Fnn : Fnn, var_x : unop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_unop_: `%%`(numtype, unop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_0{numtype : numtype, Inn : Inn, var_x : unop_Inn}: + `%%`(numtype, mk_unop__0_unop_(Inn, var_x)) + -- wf_unop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule unop__case_1{numtype : numtype, Fnn : Fnn, var_x : unop_Fnn}: + `%%`(numtype, mk_unop__1_unop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__0(var_x : unop_) : unop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{Inn : Inn, var_x : unop_Inn}(mk_unop__0_unop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__0{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_unop__1(var_x : unop_) : unop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{Fnn : Fnn, var_x : unop_Fnn}(mk_unop__1_unop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_unop__1{var_x : unop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Inn = + | ADD + | SUB + | MUL + | DIV{sx : sx}(sx : sx) + | REM{sx : sx}(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR{sx : sx}(sx : sx) + | ROTL + | ROTR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_Fnn = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax binop_ = + | mk_binop__0{Inn : Inn, var_x : binop_Inn}(Inn : Inn, var_x : binop_Inn) + | mk_binop__1{Fnn : Fnn, var_x : binop_Fnn}(Fnn : Fnn, var_x : binop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_binop_: `%%`(numtype, binop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_0{numtype : numtype, Inn : Inn, var_x : binop_Inn}: + `%%`(numtype, mk_binop__0_binop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule binop__case_1{numtype : numtype, Fnn : Fnn, var_x : binop_Fnn}: + `%%`(numtype, mk_binop__1_binop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__0(var_x : binop_) : binop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{Inn : Inn, var_x : binop_Inn}(mk_binop__0_binop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__0{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_binop__1(var_x : binop_) : binop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{Fnn : Fnn, var_x : binop_Fnn}(mk_binop__1_binop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_binop__1{var_x : binop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_Inn = + | EQZ + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax testop_ = + | mk_testop__0{Inn : Inn, var_x : testop_Inn}(Inn : Inn, var_x : testop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_testop_: `%%`(numtype, testop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule testop__case_0{numtype : numtype, Inn : Inn, var_x : testop_Inn}: + `%%`(numtype, mk_testop__0_testop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_testop__0(var_x : testop_) : testop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_testop__0{Inn : Inn, var_x : testop_Inn}(mk_testop__0_testop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Inn = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_Fnn = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax relop_ = + | mk_relop__0{Inn : Inn, var_x : relop_Inn}(Inn : Inn, var_x : relop_Inn) + | mk_relop__1{Fnn : Fnn, var_x : relop_Fnn}(Fnn : Fnn, var_x : relop_Fnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_relop_: `%%`(numtype, relop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_0{numtype : numtype, Inn : Inn, var_x : relop_Inn}: + `%%`(numtype, mk_relop__0_relop_(Inn, var_x)) + -- if (numtype = $numtype_addrtype(Inn)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule relop__case_1{numtype : numtype, Fnn : Fnn, var_x : relop_Fnn}: + `%%`(numtype, mk_relop__1_relop_(Fnn, var_x)) + -- if (numtype = $numtype_Fnn(Fnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__0(var_x : relop_) : relop_Inn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{Inn : Inn, var_x : relop_Inn}(mk_relop__0_relop_(Inn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__0{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_relop__1(var_x : relop_) : relop_Fnn? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{Fnn : Fnn, var_x : relop_Fnn}(mk_relop__1_relop_(Fnn, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_relop__1{var_x : relop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Inn_2 = + | EXTEND{sx : sx}(sx : sx) + | WRAP + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Inn_2: `%%%`(Inn, Inn, cvtop__Inn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_0{Inn_1 : Inn, Inn_2 : Inn, sx : sx}: + `%%%`(Inn_1, Inn_2, EXTEND_cvtop__Inn_1_Inn_2(sx)) + -- if ($sizenn1($numtype_addrtype(Inn_1)) < $sizenn2($numtype_addrtype(Inn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Inn_2_case_1{Inn_1 : Inn, Inn_2 : Inn}: + `%%%`(Inn_1, Inn_2, WRAP_cvtop__Inn_1_Inn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) > $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Inn_1_Fnn_2 = + | CONVERT{sx : sx}(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn, Fnn, cvtop__Inn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_0{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx}: + `%%%`(Inn_1, Fnn_2, CONVERT_cvtop__Inn_1_Fnn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Inn_1_Fnn_2_case_1{Inn_1 : Inn, Fnn_2 : Fnn}: + `%%%`(Inn_1, Fnn_2, REINTERPRET_cvtop__Inn_1_Fnn_2) + -- if ($sizenn1($numtype_addrtype(Inn_1)) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Inn_2 = + | TRUNC{sx : sx}(sx : sx) + | TRUNC_SAT{sx : sx}(sx : sx) + | REINTERPRET + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn, Inn, cvtop__Fnn_1_Inn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_0{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_1{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx}: + `%%%`(Fnn_1, Inn_2, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Inn_2_case_2{Fnn_1 : Fnn, Inn_2 : Inn}: + `%%%`(Fnn_1, Inn_2, REINTERPRET_cvtop__Fnn_1_Inn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = $sizenn2($numtype_addrtype(Inn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__Fnn_1_Fnn_2 = + | PROMOTE + | DEMOTE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn, Fnn, cvtop__Fnn_1_Fnn_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_0{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, PROMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) < $sizenn2($numtype_Fnn(Fnn_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop__Fnn_1_Fnn_2_case_1{Fnn_1 : Fnn, Fnn_2 : Fnn}: + `%%%`(Fnn_1, Fnn_2, DEMOTE_cvtop__Fnn_1_Fnn_2) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) > $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax cvtop__ = + | mk_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2) + | mk_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2) + | mk_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2) + | mk_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_cvtop__: `%%%`(numtype, numtype, cvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_0{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) + -- wf_cvtop__Inn_1_Inn_2: `%%%`(Inn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_1{numtype_1 : numtype, numtype_2 : numtype, Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) + -- wf_cvtop__Inn_1_Fnn_2: `%%%`(Inn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_addrtype(Inn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_2{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) + -- wf_cvtop__Fnn_1_Inn_2: `%%%`(Fnn_1, Inn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_addrtype(Inn_2)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule cvtop___case_3{numtype_1 : numtype, numtype_2 : numtype, Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}: + `%%%`(numtype_1, numtype_2, mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) + -- wf_cvtop__Fnn_1_Fnn_2: `%%%`(Fnn_1, Fnn_2, var_x) + -- if (numtype_1 = $numtype_Fnn(Fnn_1)) + -- if (numtype_2 = $numtype_Fnn(Fnn_2)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___0(var_x : cvtop__) : cvtop__Inn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{Inn_1 : Inn, Inn_2 : Inn, var_x : cvtop__Inn_1_Inn_2}(mk_cvtop___0_cvtop__(Inn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___0{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___1(var_x : cvtop__) : cvtop__Inn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{Inn_1 : Inn, Fnn_2 : Fnn, var_x : cvtop__Inn_1_Fnn_2}(mk_cvtop___1_cvtop__(Inn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___1{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___2(var_x : cvtop__) : cvtop__Fnn_1_Inn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{Fnn_1 : Fnn, Inn_2 : Inn, var_x : cvtop__Fnn_1_Inn_2}(mk_cvtop___2_cvtop__(Fnn_1, Inn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___2{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_cvtop___3(var_x : cvtop__) : cvtop__Fnn_1_Fnn_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{Fnn_1 : Fnn, Fnn_2 : Fnn, var_x : cvtop__Fnn_1_Fnn_2}(mk_cvtop___3_cvtop__(Fnn_1, Fnn_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_cvtop___3{var_x : cvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax dim = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_dim_0(x : dim) : (nat) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_dim_0{v_num_0 : nat}(`%`_dim(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_dim: `%`(dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule dim_case_0{i : nat}: + `%`(`%`_dim(i)) + -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax shape = + | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_shape: `%`(shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule shape_case_0{lanetype : lanetype, dim : dim}: + `%`(`%X%`_shape(lanetype, dim)) + -- wf_dim: `%`(dim) + -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_dim: `%%`(shape, dim) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_dim_case_0{Lnn : lanetype, N : nat}: + `%%`(`%X%`_shape(Lnn, `%`_dim(N)), `%`_dim(N)) + -- wf_dim: `%`(`%`_dim(N)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $lanetype(shape : shape) : lanetype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $unpackshape(shape : shape) : numtype + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax ishape = + | `%`{shape : shape, Jnn : Jnn}(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_ishape_0(x : ishape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_ishape_0{v_shape_0 : shape}(`%`_ishape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_ishape: `%`(ishape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule ishape_case_0{shape : shape, Jnn : Jnn}: + `%`(`%`_ishape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = $lanetype_Jnn(Jnn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax bshape = + | `%`{shape : shape}(shape : shape) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_bshape_0(x : bshape) : (shape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_bshape_0{v_shape_0 : shape}(`%`_bshape(v_shape_0)) = (v_shape_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_bshape: `%`(bshape) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule bshape_case_0{shape : shape}: + `%`(`%`_bshape(shape)) + -- wf_shape: `%`(shape) + -- if ($lanetype(shape) = I8_lanetype) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax zero = + | ZERO + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax half = + | LOW + | HIGH + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvunop = + | NOT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvbinop = + | AND + | ANDNOT + | OR + | XOR + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvternop = + | BITSELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vvtestop = + | ANY_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Jnn_M = + | ABS + | NEG + | POPCNT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_Jnn_M: `%%%`(Jnn, M, vunop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ABS_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NEG_vunop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop_Jnn_M_case_2{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, POPCNT_vunop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 8) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_Fnn_M = + | ABS + | NEG + | SQRT + | CEIL + | FLOOR + | TRUNC + | NEAREST + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vunop_ = + | mk_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(Jnn : Jnn, M : M, var_x : vunop_Jnn_M) + | mk_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(Fnn : Fnn, M : M, var_x : vunop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vunop_: `%%`(shape, vunop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vunop_Jnn_M}: + `%%`(shape, mk_vunop__0_vunop_(Jnn, M, var_x)) + -- wf_vunop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vunop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vunop_Fnn_M}: + `%%`(shape, mk_vunop__1_vunop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__0(var_x : vunop_) : vunop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{Jnn : Jnn, M : M, var_x : vunop_Jnn_M}(mk_vunop__0_vunop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__0{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vunop__1(var_x : vunop_) : vunop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{Fnn : Fnn, M : M, var_x : vunop_Fnn_M}(mk_vunop__1_vunop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vunop__1{var_x : vunop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Jnn_M = + | ADD + | SUB + | ADD_SAT{sx : sx}(sx : sx) + | SUB_SAT{sx : sx}(sx : sx) + | MUL + | `AVGRU` + | `Q15MULR_SATS` + | `RELAXED_Q15MULRS` + | MIN{sx : sx}(sx : sx) + | MAX{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_Jnn_M: `%%%`(Jnn, M, vbinop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, ADD_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, SUB_vbinop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_4{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, MUL_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) >= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_5{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `AVGRU`_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_6{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_7{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M) + -- if ($lsizenn($lanetype_Jnn(Jnn)) = 16) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_8{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MIN_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop_Jnn_M_case_9{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, MAX_vbinop_Jnn_M(sx)) + -- if ($lsizenn($lanetype_Jnn(Jnn)) <= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_Fnn_M = + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | PMIN + | PMAX + | RELAXED_MIN + | RELAXED_MAX + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vbinop_ = + | mk_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(Jnn : Jnn, M : M, var_x : vbinop_Jnn_M) + | mk_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(Fnn : Fnn, M : M, var_x : vbinop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vbinop_: `%%`(shape, vbinop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}: + `%%`(shape, mk_vbinop__0_vbinop_(Jnn, M, var_x)) + -- wf_vbinop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vbinop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}: + `%%`(shape, mk_vbinop__1_vbinop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__0(var_x : vbinop_) : vbinop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{Jnn : Jnn, M : M, var_x : vbinop_Jnn_M}(mk_vbinop__0_vbinop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__0{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vbinop__1(var_x : vbinop_) : vbinop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{Fnn : Fnn, M : M, var_x : vbinop_Fnn_M}(mk_vbinop__1_vbinop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vbinop__1{var_x : vbinop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Jnn_M = + | RELAXED_LANESELECT + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_Fnn_M = + | RELAXED_MADD + | RELAXED_NMADD + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vternop_ = + | mk_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(Jnn : Jnn, M : M, var_x : vternop_Jnn_M) + | mk_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(Fnn : Fnn, M : M, var_x : vternop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vternop_: `%%`(shape, vternop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vternop_Jnn_M}: + `%%`(shape, mk_vternop__0_vternop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vternop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vternop_Fnn_M}: + `%%`(shape, mk_vternop__1_vternop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__0(var_x : vternop_) : vternop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{Jnn : Jnn, M : M, var_x : vternop_Jnn_M}(mk_vternop__0_vternop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__0{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vternop__1(var_x : vternop_) : vternop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{Fnn : Fnn, M : M, var_x : vternop_Fnn_M}(mk_vternop__1_vternop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vternop__1{var_x : vternop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_Jnn_M = + | ALL_TRUE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vtestop_ = + | mk_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(Jnn : Jnn, M : M, var_x : vtestop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vtestop_: `%%`(shape, vtestop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vtestop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}: + `%%`(shape, mk_vtestop__0_vtestop_(Jnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vtestop__0(var_x : vtestop_) : vtestop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vtestop__0{Jnn : Jnn, M : M, var_x : vtestop_Jnn_M}(mk_vtestop__0_vtestop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Jnn_M = + | EQ + | NE + | LT{sx : sx}(sx : sx) + | GT{sx : sx}(sx : sx) + | LE{sx : sx}(sx : sx) + | GE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_Jnn_M: `%%%`(Jnn, M, vrelop_Jnn_M) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_0{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, EQ_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_1{Jnn : Jnn, M : M}: + `%%%`(Jnn, M, NE_vrelop_Jnn_M) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_2{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_3{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GT_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_4{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, LE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop_Jnn_M_case_5{Jnn : Jnn, M : M, sx : sx}: + `%%%`(Jnn, M, GE_vrelop_Jnn_M(sx)) + -- if (($lsizenn($lanetype_Jnn(Jnn)) =/= 64) \/ (sx = S_sx)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_Fnn_M = + | EQ + | NE + | LT + | GT + | LE + | GE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vrelop_ = + | mk_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(Jnn : Jnn, M : M, var_x : vrelop_Jnn_M) + | mk_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(Fnn : Fnn, M : M, var_x : vrelop_Fnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vrelop_: `%%`(shape, vrelop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_0{shape : shape, Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}: + `%%`(shape, mk_vrelop__0_vrelop_(Jnn, M, var_x)) + -- wf_vrelop_Jnn_M: `%%%`(Jnn, M, var_x) + -- if (shape = `%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vrelop__case_1{shape : shape, Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}: + `%%`(shape, mk_vrelop__1_vrelop_(Fnn, M, var_x)) + -- if (shape = `%X%`_shape($lanetype_Fnn(Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__0(var_x : vrelop_) : vrelop_Jnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{Jnn : Jnn, M : M, var_x : vrelop_Jnn_M}(mk_vrelop__0_vrelop_(Jnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__0{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vrelop__1(var_x : vrelop_) : vrelop_Fnn_M? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{Fnn : Fnn, M : M, var_x : vrelop_Fnn_M}(mk_vrelop__1_vrelop_(Fnn, M, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vrelop__1{var_x : vrelop_}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_Jnn_M = + | SHL + | SHR{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vshiftop_ = + | mk_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vshiftop_: `%%`(ishape, vshiftop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vshiftop__case_0{ishape : ishape, Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}: + `%%`(ishape, mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) + -- if (ishape = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vshiftop__0(var_x : vshiftop_) : vshiftop_Jnn_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vshiftop__0{Jnn : Jnn, M : M, var_x : vshiftop_Jnn_M}(mk_vshiftop__0_vshiftop_(Jnn, M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_M = + | SWIZZLE + | RELAXED_SWIZZLE + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vswizzlop_ = + | mk_vswizzlop__0{M : M, var_x : vswizzlop_M}(M : M, var_x : vswizzlop_M) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vswizzlop_: `%%`(bshape, vswizzlop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vswizzlop__case_0{bshape : bshape, M : M, var_x : vswizzlop_M}: + `%%`(bshape, mk_vswizzlop__0_vswizzlop_(M, var_x)) + -- if (bshape = `%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vswizzlop__0(var_x : vswizzlop_) : vswizzlop_M + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vswizzlop__0{M : M, var_x : vswizzlop_M}(mk_vswizzlop__0_vswizzlop_(M, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTADD_PAIRWISE{sx : sx}(sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextunop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)) + -- if ((16 <= (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) <= 32))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextunop__ = + | mk_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextunop__: `%%%`(ishape, ishape, vextunop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextunop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextunop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextunop___0(var_x : vextunop__) : vextunop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextunop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextunop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextunop___0_vextunop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTMUL{half : half, sx : sx}(half : half, sx : sx) + | `DOTS` + | `RELAXED_DOTS` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextbinop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) >= 16)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_1{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop__Jnn_1_M_1_Jnn_2_M_2_case_2{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((2 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 16)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextbinop__ = + | mk_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextbinop__: `%%%`(ishape, ishape, vextbinop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextbinop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextbinop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextbinop___0(var_x : vextbinop__) : vextbinop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextbinop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextbinop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextbinop___0_vextbinop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__Jnn_1_M_1_Jnn_2_M_2 = + | `RELAXED_DOT_ADDS` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vextternop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2) + -- if (((4 * $lsizenn1($lanetype_Jnn(Jnn_1))) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vextternop__ = + | mk_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vextternop__: `%%%`(ishape, ishape, vextternop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vextternop___case_0{ishape_1 : ishape, ishape_2 : ishape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(ishape_1, ishape_2, mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vextternop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (ishape_1 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1)))) + -- if (ishape_2 = `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vextternop___0(var_x : vextternop__) : vextternop__Jnn_1_M_1_Jnn_2_M_2 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vextternop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vextternop__Jnn_1_M_1_Jnn_2_M_2}(mk_vextternop___0_vextternop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Jnn_2_M_2 = + | EXTEND{half : half, sx : sx}(half : half, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn, M, Jnn, M, vcvtop__Jnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Jnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}: + `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)) + -- if ($lsizenn2($lanetype_Jnn(Jnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Jnn_1_M_1_Fnn_2_M_2 = + | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn, M, Fnn, M, vcvtop__Jnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Jnn_1_M_1_Fnn_2_M_2_case_0{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}: + `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)) + -- if (((($sizenn2($numtype_Fnn(Fnn_2)) = $lsizenn1($lanetype_Jnn(Jnn_1))) /\ ($lsizenn1($lanetype_Jnn(Jnn_1)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2($numtype_Fnn(Fnn_2)) = (2 * $lsizenn1($lanetype_Jnn(Jnn_1)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Jnn_2_M_2 = + | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn, M, Jnn, M, vcvtop__Fnn_1_M_1_Jnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Jnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}: + `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})) + -- if (((($sizenn1($numtype_Fnn(Fnn_1)) = $lsizenn2($lanetype_Jnn(Jnn_2))) /\ ($lsizenn2($lanetype_Jnn(Jnn_2)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $lsizenn2($lanetype_Jnn(Jnn_2)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__Fnn_1_M_1_Fnn_2_M_2 = + | DEMOTE{zero : zero}(zero : zero) + | `PROMOTELOW` + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn, M, Fnn, M, vcvtop__Fnn_1_M_1_Fnn_2_M_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_0{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)) + -- if ($sizenn1($numtype_Fnn(Fnn_1)) = (2 * $sizenn2($numtype_Fnn(Fnn_2)))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop__Fnn_1_M_1_Fnn_2_M_2_case_1{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}: + `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2) + -- if ((2 * $sizenn1($numtype_Fnn(Fnn_1))) = $sizenn2($numtype_Fnn(Fnn_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vcvtop__ = + | mk_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2) + | mk_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2) + | mk_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vcvtop__: `%%%`(shape, shape, vcvtop__) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_0{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Jnn_2_M_2: `%%%%%`(Jnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_1{shape_1 : shape, shape_2 : shape, Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Jnn_1_M_1_Fnn_2_M_2: `%%%%%`(Jnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Jnn(Jnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_2{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Jnn_2_M_2: `%%%%%`(Fnn_1, M_1, Jnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Jnn(Jnn_2), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vcvtop___case_3{shape_1 : shape, shape_2 : shape, Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}: + `%%%`(shape_1, shape_2, mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) + -- wf_vcvtop__Fnn_1_M_1_Fnn_2_M_2: `%%%%%`(Fnn_1, M_1, Fnn_2, M_2, var_x) + -- if (shape_1 = `%X%`_shape($lanetype_Fnn(Fnn_1), `%`_dim(M_1))) + -- if (shape_2 = `%X%`_shape($lanetype_Fnn(Fnn_2), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___0(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___0_vcvtop__(Jnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___0{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___1(var_x : vcvtop__) : vcvtop__Jnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Jnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___1_vcvtop__(Jnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___1{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___2(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Jnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Jnn_2_M_2}(mk_vcvtop___2_vcvtop__(Fnn_1, M_1, Jnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___2{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_vcvtop___3(var_x : vcvtop__) : vcvtop__Fnn_1_M_1_Fnn_2_M_2? + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, var_x : vcvtop__Fnn_1_M_1_Fnn_2_M_2}(mk_vcvtop___3_vcvtop__(Fnn_1, M_1, Fnn_2, M_2, var_x)) = ?(var_x) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_vcvtop___3{var_x : vcvtop__}(var_x) = ?() + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax memarg = +{ + ALIGN{u32 : u32} u32, + OFFSET{u64 : u64} u64 +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_memarg: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule memarg_case_{var_0 : u32, var_1 : u64}: + `%`({ALIGN var_0, OFFSET var_1}) + -- wf_uN: `%%`(32, var_0) + -- wf_uN: `%%`(64, var_1) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_Inn = + | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_Inn: `%%`(Inn, loadop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop_Inn_case_0{Inn : Inn, sz : sz, sx : sx}: + `%%`(Inn, `%_%`_loadop_Inn(sz, sx)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax loadop_ = + | mk_loadop__0{Inn : Inn, var_x : loadop_Inn}(Inn : Inn, var_x : loadop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_loadop_: `%%`(numtype, loadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule loadop__case_0{numtype : numtype, Inn : Inn, var_x : loadop_Inn}: + `%%`(numtype, mk_loadop__0_loadop_(Inn, var_x)) + -- wf_loadop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_loadop__0(var_x : loadop_) : loadop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_loadop__0{Inn : Inn, var_x : loadop_Inn}(mk_loadop__0_loadop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_Inn = + | `%`{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_Inn: `%%`(Inn, storeop_Inn) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop_Inn_case_0{Inn : Inn, sz : sz}: + `%%`(Inn, `%`_storeop_Inn(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 < $sizenn($numtype_addrtype(Inn))) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax storeop_ = + | mk_storeop__0{Inn : Inn, var_x : storeop_Inn}(Inn : Inn, var_x : storeop_Inn) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_storeop_: `%%`(numtype, storeop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule storeop__case_0{numtype : numtype, Inn : Inn, var_x : storeop_Inn}: + `%%`(numtype, mk_storeop__0_storeop_(Inn, var_x)) + -- wf_storeop_Inn: `%%`(Inn, var_x) + -- if (numtype = $numtype_addrtype(Inn)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $proj_storeop__0(var_x : storeop_) : storeop_Inn + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $proj_storeop__0{Inn : Inn, var_x : storeop_Inn}(mk_storeop__0_storeop_(Inn, var_x)) = var_x + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax vloadop_ = + | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) + | SPLAT{sz : sz}(sz : sz) + | ZERO{sz : sz}(sz : sz) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_vloadop_: `%%`(vectype, vloadop_) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_0{vectype : vectype, sz : sz, M : M, sx : sx}: + `%%`(vectype, `SHAPE%X%_%`_vloadop_(sz, M, sx)) + -- wf_sz: `%`(sz) + -- if ((($proj_sz_0(sz).0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_1{vectype : vectype, sz : sz}: + `%%`(vectype, SPLAT_vloadop_(sz)) + -- wf_sz: `%`(sz) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule vloadop__case_2{vectype : vectype, sz : sz}: + `%%`(vectype, ZERO_vloadop_(sz)) + -- wf_sz: `%`(sz) + -- if ($proj_sz_0(sz).0 >= 32) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax blocktype = + | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) + | _IDX{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_blocktype: `%`(blocktype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_0{`valtype?` : valtype?}: + `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- (wf_valtype: `%`(valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule blocktype_case_1{typeidx : typeidx}: + `%`(_IDX_blocktype(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax addr = nat + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 +syntax addrref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 +relation wf_addrref: `%`(addrref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_0{u31 : u31}: + `%`(REF.I31_NUM_addrref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_1{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_addrref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_2{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_addrref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_3{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_addrref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_4{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_addrref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_5{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_addrref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.8-35.15 + rule addrref_case_6{addrref : addrref}: + `%`(REF.EXTERN_addrref(addrref)) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax catch = + | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) + | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation wf_catch: `%`(catch) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_0{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_1{tagidx : tagidx, labelidx : labelidx}: + `%`(CATCH_REF_catch(tagidx, labelidx)) + -- wf_uN: `%%`(32, tagidx) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_2{labelidx : labelidx}: + `%`(CATCH_ALL_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule catch_case_3{labelidx : labelidx}: + `%`(CATCH_ALL_REF_catch(labelidx)) + -- wf_uN: `%%`(32, labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax dataaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax elemaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globaladdr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax memaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tagaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax externaddr = + | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) + | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) + | MEM{memaddr : memaddr}(memaddr : memaddr) + | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) + | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exportinst = +{ + NAME{name : name} name, + ADDR{externaddr : externaddr} externaddr +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exportinst: `%`(exportinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exportinst_case_{var_0 : name, var_1 : externaddr}: + `%`({NAME var_0, ADDR var_1}) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax moduleinst = +{ + TYPES{`deftype*` : deftype*} deftype*, + TAGS{`tagaddr*` : tagaddr*} tagaddr*, + GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, + MEMS{`memaddr*` : memaddr*} memaddr*, + TABLES{`tableaddr*` : tableaddr*} tableaddr*, + FUNCS{`funcaddr*` : funcaddr*} funcaddr*, + DATAS{`dataaddr*` : dataaddr*} dataaddr*, + ELEMS{`elemaddr*` : elemaddr*} elemaddr*, + EXPORTS{`exportinst*` : exportinst*} exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_moduleinst: `%`(moduleinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule moduleinst_case_{var_0 : deftype*, var_1 : tagaddr*, var_2 : globaladdr*, var_3 : memaddr*, var_4 : tableaddr*, var_5 : funcaddr*, var_6 : dataaddr*, var_7 : elemaddr*, var_8 : exportinst*}: + `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, EXPORTS var_8}) + -- (wf_exportinst: `%`(var_8))*{var_8 <- var_8} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax val = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_val: `%`(val) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_val(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_1{vectype : vectype, vec_ : vec_}: + `%`(VCONST_val(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_2{heaptype : heaptype}: + `%`(REF.NULL_val(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_3{u31 : u31}: + `%`(REF.I31_NUM_val(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_4{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_val(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_5{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_val(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_6{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_val(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_7{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_val(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_8{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_val(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule val_case_9{addrref : addrref}: + `%`(REF.EXTERN_val(addrref)) + -- wf_addrref: `%`(addrref) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax frame = +{ + LOCALS{`val?*` : val?*} val?*, + MODULE{moduleinst : moduleinst} moduleinst +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_frame: `%`(frame) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule frame_case_{var_0 : val?*, var_1 : moduleinst}: + `%`({LOCALS var_0, MODULE var_1}) + -- (wf_val: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} + -- wf_moduleinst: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +syntax instr = + | NOP + | UNREACHABLE + | DROP + | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) + | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) + | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) + | BR{labelidx : labelidx}(labelidx : labelidx) + | BR_IF{labelidx : labelidx}(labelidx : labelidx) + | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) + | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) + | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) + | CALL{funcidx : funcidx}(funcidx : funcidx) + | CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) + | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) + | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | THROW{tagidx : tagidx}(tagidx : tagidx) + | THROW_REF + | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) + | LOCAL.GET{localidx : localidx}(localidx : localidx) + | LOCAL.SET{localidx : localidx}(localidx : localidx) + | LOCAL.TEE{localidx : localidx}(localidx : localidx) + | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) + | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) + | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) + | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) + | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) + | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) + | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) + | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) + | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) + | LOAD{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_?, memidx : memidx, memarg : memarg) + | STORE{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_?, memidx : memidx, memarg : memarg) + | VLOAD{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_?, memidx : memidx, memarg : memarg) + | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | MEMORY.SIZE{memidx : memidx}(memidx : memidx) + | MEMORY.GROW{memidx : memidx}(memidx : memidx) + | MEMORY.FILL{memidx : memidx}(memidx : memidx) + | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) + | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) + | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.IS_NULL + | REF.AS_NON_NULL + | REF.EQ + | REF.TEST{reftype : reftype}(reftype : reftype) + | REF.CAST{reftype : reftype}(reftype : reftype) + | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) + | REF.I31 + | I31.GET{sx : sx}(sx : sx) + | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) + | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) + | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) + | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.LEN + | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) + | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) + | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) + | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) + | EXTERN.CONVERT_ANY + | ANY.CONVERT_EXTERN + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | UNOP{numtype : numtype, unop_ : unop_}(numtype : numtype, unop_ : unop_) + | BINOP{numtype : numtype, binop_ : binop_}(numtype : numtype, binop_ : binop_) + | TESTOP{numtype : numtype, testop_ : testop_}(numtype : numtype, testop_ : testop_) + | RELOP{numtype : numtype, relop_ : relop_}(numtype : numtype, relop_ : relop_) + | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) + | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) + | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) + | VUNOP{shape : shape, vunop_ : vunop_}(shape : shape, vunop_ : vunop_) + | VBINOP{shape : shape, vbinop_ : vbinop_}(shape : shape, vbinop_ : vbinop_) + | VTERNOP{shape : shape, vternop_ : vternop_}(shape : shape, vternop_ : vternop_) + | VTESTOP{shape : shape, vtestop_ : vtestop_}(shape : shape, vtestop_ : vtestop_) + | VRELOP{shape : shape, vrelop_ : vrelop_}(shape : shape, vrelop_ : vrelop_) + | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_}(ishape : ishape, vshiftop_ : vshiftop_) + | VBITMASK{ishape : ishape}(ishape : ishape) + | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_}(bshape : bshape, vswizzlop_ : vswizzlop_) + | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) + | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__) + | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__) + | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__) + | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) + | VSPLAT{shape : shape}(shape : shape) + | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) + | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) + | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | TRAP +} + +def $instr_addrref(addrref) : instr + def $instr_addrref{x0 : u31}(REF.I31_NUM_addrref(x0)) = REF.I31_NUM_instr(x0) + def $instr_addrref{x0 : structaddr}(REF.STRUCT_ADDR_addrref(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_addrref{x0 : arrayaddr}(REF.ARRAY_ADDR_addrref(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_addrref{x0 : funcaddr}(REF.FUNC_ADDR_addrref(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_addrref{x0 : exnaddr}(REF.EXN_ADDR_addrref(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_addrref{x0 : hostaddr}(REF.HOST_ADDR_addrref(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_addrref{x0 : addrref}(REF.EXTERN_addrref(x0)) = REF.EXTERN_instr(x0) + +def $instr_val(val) : instr + def $instr_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_instr(x0, x1) + def $instr_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_instr(x0, x1) + def $instr_val{x0 : heaptype}(REF.NULL_val(x0)) = REF.NULL_instr(x0) + def $instr_val{x0 : u31}(REF.I31_NUM_val(x0)) = REF.I31_NUM_instr(x0) + def $instr_val{x0 : structaddr}(REF.STRUCT_ADDR_val(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_val{x0 : arrayaddr}(REF.ARRAY_ADDR_val(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_val{x0 : funcaddr}(REF.FUNC_ADDR_val(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_val{x0 : exnaddr}(REF.EXN_ADDR_val(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_val{x0 : hostaddr}(REF.HOST_ADDR_val(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_val{x0 : addrref}(REF.EXTERN_val(x0)) = REF.EXTERN_instr(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 +relation wf_instr: `%`(instr) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_0: + `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_1: + `%`(UNREACHABLE_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_2: + `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_3{`valtype*?` : valtype*?}: + `%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) + -- (wf_valtype: `%`(valtype))*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_4{blocktype : blocktype, `instr*` : instr*}: + `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_5{blocktype : blocktype, `instr*` : instr*}: + `%`(LOOP_instr(blocktype, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_6{blocktype : blocktype, `instr*` : instr*, var_0 : instr*}: + `%`(`IF%%ELSE%`_instr(blocktype, instr*{instr <- `instr*`}, var_0)) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_7{labelidx : labelidx}: + `%`(BR_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_8{labelidx : labelidx}: + `%`(BR_IF_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_9{`labelidx*` : labelidx*, var_0 : labelidx}: + `%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, var_0)) + -- (wf_uN: `%%`(32, labelidx))*{labelidx <- `labelidx*`} + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_10{labelidx : labelidx}: + `%`(BR_ON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_11{labelidx : labelidx}: + `%`(BR_ON_NON_NULL_instr(labelidx)) + -- wf_uN: `%%`(32, labelidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_12{labelidx : labelidx, reftype : reftype, var_0 : reftype}: + `%`(BR_ON_CAST_instr(labelidx, reftype, var_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_13{labelidx : labelidx, reftype : reftype, var_0 : reftype}: + `%`(BR_ON_CAST_FAIL_instr(labelidx, reftype, var_0)) + -- wf_uN: `%%`(32, labelidx) + -- wf_reftype: `%`(reftype) + -- wf_reftype: `%`(var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_14{funcidx : funcidx}: + `%`(CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_15{typeuse : typeuse}: + `%`(CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_16{tableidx : tableidx, typeuse : typeuse}: + `%`(CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_17: + `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_18{funcidx : funcidx}: + `%`(RETURN_CALL_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_19{typeuse : typeuse}: + `%`(RETURN_CALL_REF_instr(typeuse)) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_20{tableidx : tableidx, typeuse : typeuse}: + `%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) + -- wf_uN: `%%`(32, tableidx) + -- wf_typeuse: `%`(typeuse) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_21{tagidx : tagidx}: + `%`(THROW_instr(tagidx)) + -- wf_uN: `%%`(32, tagidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_22: + `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_23{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}: + `%`(TRY_TABLE_instr(blocktype, list, instr*{instr <- `instr*`})) + -- wf_blocktype: `%`(blocktype) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_24{localidx : localidx}: + `%`(LOCAL.GET_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_25{localidx : localidx}: + `%`(LOCAL.SET_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_26{localidx : localidx}: + `%`(LOCAL.TEE_instr(localidx)) + -- wf_uN: `%%`(32, localidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_27{globalidx : globalidx}: + `%`(GLOBAL.GET_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_28{globalidx : globalidx}: + `%`(GLOBAL.SET_instr(globalidx)) + -- wf_uN: `%%`(32, globalidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_29{tableidx : tableidx}: + `%`(TABLE.GET_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_30{tableidx : tableidx}: + `%`(TABLE.SET_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_31{tableidx : tableidx}: + `%`(TABLE.SIZE_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_32{tableidx : tableidx}: + `%`(TABLE.GROW_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_33{tableidx : tableidx}: + `%`(TABLE.FILL_instr(tableidx)) + -- wf_uN: `%%`(32, tableidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_34{tableidx : tableidx, var_0 : tableidx}: + `%`(TABLE.COPY_instr(tableidx, var_0)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_35{tableidx : tableidx, elemidx : elemidx}: + `%`(TABLE.INIT_instr(tableidx, elemidx)) + -- wf_uN: `%%`(32, tableidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_36{elemidx : elemidx}: + `%`(ELEM.DROP_instr(elemidx)) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_37{numtype : numtype, `loadop_?` : loadop_?, memidx : memidx, memarg : memarg}: + `%`(LOAD_instr(numtype, loadop_?{loadop_ <- `loadop_?`}, memidx, memarg)) + -- (wf_loadop_: `%%`(numtype, loadop_))?{loadop_ <- `loadop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_38{numtype : numtype, `storeop_?` : storeop_?, memidx : memidx, memarg : memarg}: + `%`(STORE_instr(numtype, storeop_?{storeop_ <- `storeop_?`}, memidx, memarg)) + -- (wf_storeop_: `%%`(numtype, storeop_))?{storeop_ <- `storeop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_39{vectype : vectype, `vloadop_?` : vloadop_?, memidx : memidx, memarg : memarg}: + `%`(VLOAD_instr(vectype, vloadop_?{vloadop_ <- `vloadop_?`}, memidx, memarg)) + -- (wf_vloadop_: `%%`(vectype, vloadop_))?{vloadop_ <- `vloadop_?`} + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_40{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_41{vectype : vectype, memidx : memidx, memarg : memarg}: + `%`(VSTORE_instr(vectype, memidx, memarg)) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_42{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}: + `%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) + -- wf_sz: `%`(sz) + -- wf_uN: `%%`(32, memidx) + -- wf_memarg: `%`(memarg) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_43{memidx : memidx}: + `%`(MEMORY.SIZE_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_44{memidx : memidx}: + `%`(MEMORY.GROW_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_45{memidx : memidx}: + `%`(MEMORY.FILL_instr(memidx)) + -- wf_uN: `%%`(32, memidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_46{memidx : memidx, var_0 : memidx}: + `%`(MEMORY.COPY_instr(memidx, var_0)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_47{memidx : memidx, dataidx : dataidx}: + `%`(MEMORY.INIT_instr(memidx, dataidx)) + -- wf_uN: `%%`(32, memidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_48{dataidx : dataidx}: + `%`(DATA.DROP_instr(dataidx)) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_49{heaptype : heaptype}: + `%`(REF.NULL_instr(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_50: + `%`(REF.IS_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_51: + `%`(REF.AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_52: + `%`(REF.EQ_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_53{reftype : reftype}: + `%`(REF.TEST_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_54{reftype : reftype}: + `%`(REF.CAST_instr(reftype)) + -- wf_reftype: `%`(reftype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_55{funcidx : funcidx}: + `%`(REF.FUNC_instr(funcidx)) + -- wf_uN: `%%`(32, funcidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_56: + `%`(REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_57{sx : sx}: + `%`(I31.GET_instr(sx)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_58{typeidx : typeidx}: + `%`(STRUCT.NEW_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_59{typeidx : typeidx}: + `%`(STRUCT.NEW_DEFAULT_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_60{`sx?` : sx?, typeidx : typeidx, u32 : u32}: + `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_61{typeidx : typeidx, u32 : u32}: + `%`(STRUCT.SET_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_62{typeidx : typeidx}: + `%`(ARRAY.NEW_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_63{typeidx : typeidx}: + `%`(ARRAY.NEW_DEFAULT_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_64{typeidx : typeidx, u32 : u32}: + `%`(ARRAY.NEW_FIXED_instr(typeidx, u32)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, u32) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_65{typeidx : typeidx, dataidx : dataidx}: + `%`(ARRAY.NEW_DATA_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_66{typeidx : typeidx, elemidx : elemidx}: + `%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_67{`sx?` : sx?, typeidx : typeidx}: + `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_68{typeidx : typeidx}: + `%`(ARRAY.SET_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_69: + `%`(ARRAY.LEN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_70{typeidx : typeidx}: + `%`(ARRAY.FILL_instr(typeidx)) + -- wf_uN: `%%`(32, typeidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_71{typeidx : typeidx, var_0 : typeidx}: + `%`(ARRAY.COPY_instr(typeidx, var_0)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_72{typeidx : typeidx, dataidx : dataidx}: + `%`(ARRAY.INIT_DATA_instr(typeidx, dataidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, dataidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_73{typeidx : typeidx, elemidx : elemidx}: + `%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) + -- wf_uN: `%%`(32, typeidx) + -- wf_uN: `%%`(32, elemidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_74: + `%`(EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_75: + `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_76{numtype : numtype, num_ : num_}: + `%`(CONST_instr(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_77{numtype : numtype, unop_ : unop_}: + `%`(UNOP_instr(numtype, unop_)) + -- wf_unop_: `%%`(numtype, unop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_78{numtype : numtype, binop_ : binop_}: + `%`(BINOP_instr(numtype, binop_)) + -- wf_binop_: `%%`(numtype, binop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_79{numtype : numtype, testop_ : testop_}: + `%`(TESTOP_instr(numtype, testop_)) + -- wf_testop_: `%%`(numtype, testop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_80{numtype : numtype, relop_ : relop_}: + `%`(RELOP_instr(numtype, relop_)) + -- wf_relop_: `%%`(numtype, relop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_81{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__}: + `%`(CVTOP_instr(numtype_1, numtype_2, cvtop__)) + -- wf_cvtop__: `%%%`(numtype_2, numtype_1, cvtop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_82{vectype : vectype, vec_ : vec_}: + `%`(VCONST_instr(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_83{vectype : vectype, vvunop : vvunop}: + `%`(VVUNOP_instr(vectype, vvunop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_84{vectype : vectype, vvbinop : vvbinop}: + `%`(VVBINOP_instr(vectype, vvbinop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_85{vectype : vectype, vvternop : vvternop}: + `%`(VVTERNOP_instr(vectype, vvternop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_86{vectype : vectype, vvtestop : vvtestop}: + `%`(VVTESTOP_instr(vectype, vvtestop)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_87{shape : shape, vunop_ : vunop_}: + `%`(VUNOP_instr(shape, vunop_)) + -- wf_shape: `%`(shape) + -- wf_vunop_: `%%`(shape, vunop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_88{shape : shape, vbinop_ : vbinop_}: + `%`(VBINOP_instr(shape, vbinop_)) + -- wf_shape: `%`(shape) + -- wf_vbinop_: `%%`(shape, vbinop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_89{shape : shape, vternop_ : vternop_}: + `%`(VTERNOP_instr(shape, vternop_)) + -- wf_shape: `%`(shape) + -- wf_vternop_: `%%`(shape, vternop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_90{shape : shape, vtestop_ : vtestop_}: + `%`(VTESTOP_instr(shape, vtestop_)) + -- wf_shape: `%`(shape) + -- wf_vtestop_: `%%`(shape, vtestop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_91{shape : shape, vrelop_ : vrelop_}: + `%`(VRELOP_instr(shape, vrelop_)) + -- wf_shape: `%`(shape) + -- wf_vrelop_: `%%`(shape, vrelop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_92{ishape : ishape, vshiftop_ : vshiftop_}: + `%`(VSHIFTOP_instr(ishape, vshiftop_)) + -- wf_ishape: `%`(ishape) + -- wf_vshiftop_: `%%`(ishape, vshiftop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_93{ishape : ishape}: + `%`(VBITMASK_instr(ishape)) + -- wf_ishape: `%`(ishape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_94{bshape : bshape, vswizzlop_ : vswizzlop_}: + `%`(VSWIZZLOP_instr(bshape, vswizzlop_)) + -- wf_bshape: `%`(bshape) + -- wf_vswizzlop_: `%%`(bshape, vswizzlop_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*, var_0 : dim}: + `%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) + -- fun_dim: `%%`($proj_bshape_0(bshape).0, var_0) + -- wf_bshape: `%`(bshape) + -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}: + `%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextunop__: `%%%`(ishape_2, ishape_1, vextunop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_97{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__}: + `%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextbinop__: `%%%`(ishape_2, ishape_1, vextbinop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_98{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__}: + `%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop__)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- wf_vextternop__: `%%%`(ishape_2, ishape_1, vextternop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_99{ishape_1 : ishape, ishape_2 : ishape, sx : sx}: + `%`(VNARROW_instr(ishape_1, ishape_2, sx)) + -- wf_ishape: `%`(ishape_1) + -- wf_ishape: `%`(ishape_2) + -- if (($lsize($lanetype($proj_ishape_0(ishape_2).0)) = (2 * $lsize($lanetype($proj_ishape_0(ishape_1).0)))) /\ ((2 * $lsize($lanetype($proj_ishape_0(ishape_1).0))) <= 32)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_100{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__}: + `%`(VCVTOP_instr(shape_1, shape_2, vcvtop__)) + -- wf_shape: `%`(shape_1) + -- wf_shape: `%`(shape_2) + -- wf_vcvtop__: `%%%`(shape_2, shape_1, vcvtop__) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_101{shape : shape}: + `%`(VSPLAT_instr(shape)) + -- wf_shape: `%`(shape) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_102{shape : shape, `sx?` : sx?, laneidx : laneidx}: + `%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_103{shape : shape, laneidx : laneidx}: + `%`(VREPLACE_LANE_instr(shape, laneidx)) + -- wf_shape: `%`(shape) + -- wf_uN: `%%`(8, laneidx) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_104{u31 : u31}: + `%`(REF.I31_NUM_instr(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_105{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_instr(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_106{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_instr(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_107{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_instr(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_108{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_instr(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_109{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_instr(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_110{addrref : addrref}: + `%`(REF.EXTERN_instr(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_111{n : n, `instr*` : instr*, var_0 : instr*}: + `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, var_0)) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (wf_instr: `%`(var_0))*{var_0 <- var_0} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_112{n : n, frame : frame, `instr*` : instr*}: + `%`(`FRAME_%{%}%`_instr(n, frame, instr*{instr <- `instr*`})) + -- wf_frame: `%`(frame) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_113{n : n, `catch*` : catch*, `instr*` : instr*}: + `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})) + -- (wf_catch: `%`(catch))*{catch <- `catch*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 + rule instr_case_114: + `%`(TRAP_instr) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax expr = instr* + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_memarg0: `%`(memarg) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_memarg0_case_0: + `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_const: `%%%`(consttype, lit_, instr) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_0{c : num_}: + `%%%`(I32_consttype, mk_lit__0_lit_(I32_numtype, c), CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_1{c : num_}: + `%%%`(I64_consttype, mk_lit__0_lit_(I64_numtype, c), CONST_instr(I64_numtype, c)) + -- wf_instr: `%`(CONST_instr(I64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_2{c : num_}: + `%%%`(F32_consttype, mk_lit__0_lit_(F32_numtype, c), CONST_instr(F32_numtype, c)) + -- wf_instr: `%`(CONST_instr(F32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_3{c : num_}: + `%%%`(F64_consttype, mk_lit__0_lit_(F64_numtype, c), CONST_instr(F64_numtype, c)) + -- wf_instr: `%`(CONST_instr(F64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_const_case_4{c : uN}: + `%%%`(V128_consttype, mk_lit__1_lit_(V128_vectype, c), VCONST_instr(V128_vectype, c)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_shape: `%%`(shape, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_shape_case_0{lanetype : lanetype, dim : dim, var_0 : free}: + `%%`(`%X%`_shape(lanetype, dim), var_0) + -- fun_free_lanetype: `%%`(lanetype, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_blocktype: `%%`(blocktype, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: + `%%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`}), var_0) + -- if ((`var_1?` = ?()) <=> (`valtype?` = ?())) + -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_blocktype_case_1{typeidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: + `%%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}), var_0) + -- if ((`var_2*?` = ?()) <=> (`valtype*?` = ?())) + -- (if (|`var_2*`| = |`valtype*`|))?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- if ((`var_2*?` = ?()) <=> (`var_1?` = ?())) + -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr*{instr <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_7{labelidx : uN, var_0 : free}: + `%%`(BR_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_8{labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|`var_1*`| = |`labelidx*`|) + -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_10{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_11{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_14{funcidx : uN, var_0 : free}: + `%%`(CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_18{funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_21{numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(numtype, numlit), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_22{numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(numtype, unop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_23{numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(numtype, binop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_24{numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(numtype, testop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_25{numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(numtype, relop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_26{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_27{vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(vectype, veclit), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_28{vectype : vectype, vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(vectype, vvunop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_29{vectype : vectype, vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(vectype, vvbinop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_30{vectype : vectype, vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(vectype, vvternop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_31{vectype : vectype, vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(vectype, vvtestop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_32{shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(shape, vunop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_33{shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(shape, vbinop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_34{shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(shape, vternop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_35{shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(shape, vtestop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_36{shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(shape, vrelop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_37{ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_38{ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_39{bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_40{bshape : bshape, `laneidx*` : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`}), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_41{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_42{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_43{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_45{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_46{shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(shape), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_47{shape : shape, `sx?` : sx?, laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_48{shape : shape, laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_49{heaptype : heaptype, var_0 : free}: + `%%`(REF.NULL_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_50: + `%%`(REF.IS_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_51: + `%%`(REF.AS_NON_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_52: + `%%`(REF.EQ_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_53{reftype : reftype, var_0 : free}: + `%%`(REF.TEST_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_54{reftype : reftype, var_0 : free}: + `%%`(REF.CAST_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_55{funcidx : uN, var_0 : free}: + `%%`(REF.FUNC_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_56: + `%%`(REF.I31_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_57{sx : sx}: + `%%`(I31.GET_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_58{typeidx : uN}: + `%%`(STRUCT.NEW_instr(typeidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_59{typeidx : uN, var_0 : free}: + `%%`(STRUCT.NEW_DEFAULT_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_60{`sx?` : sx?, typeidx : uN, u32 : uN, var_0 : free}: + `%%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_61{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(STRUCT.SET_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_62{typeidx : uN, var_0 : free}: + `%%`(ARRAY.NEW_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_63{typeidx : uN, var_0 : free}: + `%%`(ARRAY.NEW_DEFAULT_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(ARRAY.NEW_FIXED_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_65{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.NEW_DATA_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_66{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_67{`sx?` : sx?, typeidx : uN, var_0 : free}: + `%%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_68{typeidx : uN, var_0 : free}: + `%%`(ARRAY.SET_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_69: + `%%`(ARRAY.LEN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_70{typeidx : uN, var_0 : free}: + `%%`(ARRAY.FILL_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_71{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.COPY_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_72{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.INIT_DATA_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_73{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_74: + `%%`(EXTERN.CONVERT_ANY_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_75: + `%%`(ANY.CONVERT_EXTERN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_76{localidx : uN, var_0 : free}: + `%%`(LOCAL.GET_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_77{localidx : uN, var_0 : free}: + `%%`(LOCAL.SET_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_78{localidx : uN, var_0 : free}: + `%%`(LOCAL.TEE_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_79{globalidx : uN, var_0 : free}: + `%%`(GLOBAL.GET_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_80{globalidx : uN, var_0 : free}: + `%%`(GLOBAL.SET_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_81{tableidx : uN, var_0 : free}: + `%%`(TABLE.GET_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_82{tableidx : uN, var_0 : free}: + `%%`(TABLE.SET_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_83{tableidx : uN, var_0 : free}: + `%%`(TABLE.SIZE_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_84{tableidx : uN, var_0 : free}: + `%%`(TABLE.GROW_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_85{tableidx : uN, var_0 : free}: + `%%`(TABLE.FILL_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_86{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(TABLE.COPY_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_87{tableidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(TABLE.INIT_instr(tableidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_88{elemidx : uN, var_0 : free}: + `%%`(ELEM.DROP_instr(elemidx), var_0) + -- fun_free_elemidx: `%%`(elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_89{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_90{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_91{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_92{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_93{vectype : vectype, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(vectype, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_94{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_95{memidx : uN, var_0 : free}: + `%%`(MEMORY.SIZE_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_96{memidx : uN, var_0 : free}: + `%%`(MEMORY.GROW_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_97{memidx : uN, var_0 : free}: + `%%`(MEMORY.FILL_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_98{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY.COPY_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_99{memidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY.INIT_instr(memidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_100{dataidx : uN, var_0 : free}: + `%%`(DATA.DROP_instr(dataidx), var_0) + -- fun_free_dataidx: `%%`(dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 + rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr*{instr <- `instr*`}, free[LABELS_free = var_0]) + -- if (|`var_2*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr, var_2))*{var_2 <- `var_2*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) + -- wf_free: `%`(free) + -- where free = var_1 {free} +} + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +relation fun_free_expr: `%%`(expr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr*{instr <- `instr*`}, var_0) + -- if (|`var_1*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elemmode = + | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elemmode: `%`(elemmode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_0{tableidx : tableidx, expr : expr}: + `%`(ACTIVE_elemmode(tableidx, expr)) + -- wf_uN: `%%`(32, tableidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_1: + `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elemmode_case_2: + `%`(DECLARE_elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax datamode = + | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | PASSIVE + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_datamode: `%`(datamode) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_0{memidx : memidx, expr : expr}: + `%`(ACTIVE_datamode(memidx, expr)) + -- wf_uN: `%%`(32, memidx) + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule datamode_case_1: + `%`(PASSIVE_datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax type = + | TYPE{rectype : rectype}(rectype : rectype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax tag = + | TAG{tagtype : tagtype}(tagtype : tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_tag: `%`(tag) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule tag_case_0{tagtype : tagtype}: + `%`(TAG_tag(tagtype)) + -- wf_typeuse: `%`(tagtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax global = + | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_global: `%`(global) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule global_case_0{globaltype : globaltype, expr : expr}: + `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(globaltype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax mem = + | MEMORY{memtype : memtype}(memtype : memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_mem: `%`(mem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule mem_case_0{memtype : memtype}: + `%`(MEMORY_mem(memtype)) + -- wf_memtype: `%`(memtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax table = + | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_table: `%`(table) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule table_case_0{tabletype : tabletype, expr : expr}: + `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(tabletype) + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax data = + | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_data: `%`(data) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule data_case_0{`byte*` : byte*, datamode : datamode}: + `%`(DATA_data(byte*{byte <- `byte*`}, datamode)) + -- (wf_byte: `%`(byte))*{byte <- `byte*`} + -- wf_datamode: `%`(datamode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax local = + | LOCAL{valtype : valtype}(valtype : valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_local: `%`(local) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule local_case_0{valtype : valtype}: + `%`(LOCAL_local(valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax func = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_func: `%`(func) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule func_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_func(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax elem = + | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_elem: `%`(elem) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: + `%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) + -- wf_reftype: `%`(reftype) + -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} + -- wf_elemmode: `%`(elemmode) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax start = + | START{funcidx : funcidx}(funcidx : funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_start: `%`(start) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule start_case_0{funcidx : funcidx}: + `%`(START_start(funcidx)) + -- wf_uN: `%%`(32, funcidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax import = + | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_import: `%`(import) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule import_case_0{name : name, externtype : externtype, var_0 : name}: + `%`(IMPORT_import(name, var_0, externtype)) + -- wf_name: `%`(name) + -- wf_externtype: `%`(externtype) + -- wf_name: `%`(var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax export = + | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_export: `%`(export) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule export_case_0{name : name, externidx : externidx}: + `%`(EXPORT_export(name, externidx)) + -- wf_name: `%`(name) + -- wf_externidx: `%`(externidx) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +syntax module = + | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation wf_module: `%`(module) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}: + `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_import: `%`(import))*{import <- `import*`} + -- (wf_tag: `%`(tag))*{tag <- `tag*`} + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_func: `%`(func))*{func <- `func*`} + -- (wf_data: `%`(data))*{data <- `data*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + -- (wf_start: `%`(start))?{start <- `start?`} + -- (wf_export: `%`(export))*{export <- `export*`} + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_type: `%%`(type, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_tag: `%%`(tag, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_global: `%%`(global, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_mem: `%%`(mem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_mem_case_0{memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_table: `%%`(table, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_local: `%%`(local, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_func: `%%`(func, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(typeidx, local*{local <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_3) + -- if (|`var_2*`| = |`local*`|) + -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_datamode: `%%`(datamode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_data: `%%`(data, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte*{byte <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elemmode: `%%`(elemmode, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_elem: `%%`(elem, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- if (|`var_2*`| = |`expr*`|) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_start: `%%`(start, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_start_case_0{funcidx : uN, var_0 : free}: + `%%`(START_start(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_import: `%%`(import, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_export: `%%`(export, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_export_case_0{name : name, externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(name, externidx), var_0) + -- fun_free_externidx: `%%`(externidx, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_free_module: `%%`(module, free) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|`var_21*`| = |`export*`|) + -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} + -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- if (|`var_19*`| = |`import*`|) + -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} + -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- if ((`var_17?` = ?()) <=> (`start?` = ?())) + -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} + -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- if (|`var_15*`| = |`elem*`|) + -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} + -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- if (|`var_13*`| = |`data*`|) + -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} + -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- if (|`var_11*`| = |`func*`|) + -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} + -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`table*`|) + -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} + -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- if (|`var_7*`| = |`mem*`|) + -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} + -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- if (|`var_5*`| = |`global*`|) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- if (|`var_3*`| = |`tag*`|) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`type*`|) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_funcidx_module: `%%`(module, funcidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) + +;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +relation fun_dataidx_funcs: `%%`(func*, dataidx*) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func*{func <- `func*`}, var_0.DATAS_free) + -- if (|`var_1*`| = |`func*`|) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax init = + | SET + | UNSET + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax localtype = + | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_localtype: `%`(localtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule localtype_case_0{init : init, valtype : valtype}: + `%`(`%%`_localtype(init, valtype)) + -- wf_valtype: `%`(valtype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax instrtype = + | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_instrtype: `%`(instrtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule instrtype_case_0{resulttype : resulttype, `localidx*` : localidx*, var_0 : resulttype}: + `%`(`%->_%%`_instrtype(resulttype, localidx*{localidx <- `localidx*`}, var_0)) + -- (wf_uN: `%%`(32, localidx))*{localidx <- `localidx*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +syntax context = +{ + TYPES{`deftype*` : deftype*} deftype*, + RECS{`subtype*` : subtype*} subtype*, + TAGS{`tagtype*` : tagtype*} tagtype*, + GLOBALS{`globaltype*` : globaltype*} globaltype*, + MEMS{`memtype*` : memtype*} memtype*, + TABLES{`tabletype*` : tabletype*} tabletype*, + FUNCS{`deftype*` : deftype*} deftype*, + DATAS{`datatype*` : datatype*} datatype*, + ELEMS{`elemtype*` : elemtype*} elemtype*, + LOCALS{`localtype*` : localtype*} localtype*, + LABELS{`resulttype*` : resulttype*} resulttype*, + RETURN{`resulttype?` : resulttype?} resulttype?, + REFS{`funcidx*` : funcidx*} funcidx* +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation wf_context: `%`(context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule context_case_{var_0 : deftype*, var_1 : subtype*, var_2 : tagtype*, var_3 : globaltype*, var_4 : memtype*, var_5 : tabletype*, var_6 : deftype*, var_7 : datatype*, var_8 : elemtype*, var_9 : localtype*, var_10 : resulttype*, var_11 : resulttype?, var_12 : funcidx*}: + `%`({TYPES var_0, RECS var_1, TAGS var_2, GLOBALS var_3, MEMS var_4, TABLES var_5, FUNCS var_6, DATAS var_7, ELEMS var_8, LOCALS var_9, LABELS var_10, RETURN var_11, REFS var_12}) + -- (wf_subtype: `%`(var_1))*{var_1 <- var_1} + -- (wf_typeuse: `%`(var_2))*{var_2 <- var_2} + -- (wf_globaltype: `%`(var_3))*{var_3 <- var_3} + -- (wf_memtype: `%`(var_4))*{var_4 <- var_4} + -- (wf_tabletype: `%`(var_5))*{var_5 <- var_5} + -- (wf_reftype: `%`(var_8))*{var_8 <- var_8} + -- (wf_localtype: `%`(var_9))*{var_9 <- var_9} + -- (wf_uN: `%%`(32, var_12))*{var_12 <- var_12} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*}: + `%%%%`(C, [x_1] ++ x*{x <- `x*`}, [], C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_2{C : context, lct_1 : localtype, `lct*` : localtype*}: + `%%%%`(C, [], [lct_1] ++ lct*{lct <- `lct*`}, C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_3{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context}: + `%%%%`(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt*{dt <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt*{dt <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- where dt'*{dt' <- `dt'*`} = var_1 {dt', `dt'*`} +} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_valtype: `%%%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_deftype: `%%%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- where dt'*{dt' <- `dt'*`} = var_1 {dt', `dt'*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_externtype: `%%%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Numtype_ok: `%|-%:OK`(context, numtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, numtype : numtype}: + `%|-%:OK`(C, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Vectype_ok: `%|-%:OK`(context, vectype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, vectype : vectype}: + `%|-%:OK`(C, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK{typeidx : typeidx}(typeidx : typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidx: `%`(oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidx_case_0{typeidx : typeidx}: + `%`(OK_oktypeidx(typeidx)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidxnat = + | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation wf_oktypeidxnat: `%`(oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule oktypeidxnat_case_0{typeidx : typeidx, nat : nat}: + `%`(OK_oktypeidxnat(typeidx, nat)) + -- wf_uN: `%%`(32, typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Packtype_ok: `%|-%:OK`(context, packtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, packtype : packtype}: + `%|-%:OK`(C, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, packtype : packtype}: + `%|-%<:%`(C, packtype, packtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, numtype : numtype}: + `%|-%<:%`(C, numtype, numtype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand: `%~~%`(deftype, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{deftype : deftype, comptype : comptype, var_0 : comptype}: + `%~~%`(deftype, comptype) + -- fun_expanddt: `%%`(deftype, var_0) + -- wf_comptype: `%`(comptype) + -- if (var_0 = comptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, vectype : vectype}: + `%|-%<:%`(C, vectype, vectype) + -- wf_context: `%`(C) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{rectype : rectype, n : n, x : uN, i : nat}(_DEF_typeuse(rectype, n), x, i) = true + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeidx : uN, x : uN, i : nat}(_IDX_typeuse(typeidx), x, i) = ($proj_uN_0(typeidx).0 < $proj_uN_0(x).0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{j : nat, x : uN, i : nat}(REC_typeuse(j), x, i) = (j < i) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation fun_unrollht: `%%%`(context, heaptype, subtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht_case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht_case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule fun_unrollht_case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +relation Heaptype_ok: `%|-%:OK`(context, heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + rule abs{C : context, absheaptype : absheaptype}: + `%|-%:OK`(C, $heaptype_absheaptype(absheaptype)) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + rule typeuse{C : context, typeuse : typeuse}: + `%|-%:OK`(C, $heaptype_typeuse(typeuse)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +relation Reftype_ok: `%|-%:OK`(context, reftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + rule _{C : context, heaptype : heaptype}: + `%|-%:OK`(C, REF_reftype(?(NULL_null), heaptype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), heaptype)) + -- Heaptype_ok: `%|-%:OK`(C, heaptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +relation Valtype_ok: `%|-%:OK`(context, valtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + rule num{C : context, numtype : numtype}: + `%|-%:OK`(C, $valtype_numtype(numtype)) + -- wf_context: `%`(C) + -- Numtype_ok: `%|-%:OK`(C, numtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + rule vec{C : context, vectype : vectype}: + `%|-%:OK`(C, $valtype_vectype(vectype)) + -- wf_context: `%`(C) + -- Vectype_ok: `%|-%:OK`(C, vectype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + rule ref{C : context, reftype : reftype}: + `%|-%:OK`(C, $valtype_reftype(reftype)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype) + -- Reftype_ok: `%|-%:OK`(C, reftype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +relation Typeuse_ok: `%|-%:OK`(context, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + rule typeidx{C : context, typeidx : typeidx, dt : deftype}: + `%|-%:OK`(C, _IDX_typeuse(typeidx)) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- if (C.TYPES_context[$proj_uN_0(typeidx).0] = dt) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 + rule rec{C : context, i : n, st : subtype}: + `%|-%:OK`(C, REC_typeuse(i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(st) + -- wf_typeuse: `%`(REC_typeuse(i)) + -- if (i < |C.RECS_context|) + -- if (C.RECS_context[i] = st) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 + rule deftype{C : context, deftype : deftype}: + `%|-%:OK`(C, $typeuse_deftype(deftype)) + -- wf_context: `%`(C) + -- Deftype_ok: `%|-%:OK`(C, deftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +relation Resulttype_ok: `%|-%:OK`(context, resulttype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + rule _{C : context, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t))*{t <- `t*`} + -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + rule _{C : context, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype(?(MUT_mut), storagetype)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), storagetype)) + -- Storagetype_ok: `%|-%:OK`(C, storagetype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +relation Storagetype_ok: `%|-%:OK`(context, storagetype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + rule val{C : context, valtype : valtype}: + `%|-%:OK`(C, $storagetype_valtype(valtype)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- Valtype_ok: `%|-%:OK`(C, valtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + rule pack{C : context, packtype : packtype}: + `%|-%:OK`(C, $storagetype_packtype(packtype)) + -- wf_context: `%`(C) + -- Packtype_ok: `%|-%:OK`(C, packtype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +relation Comptype_ok: `%|-%:OK`(context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + rule struct{C : context, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + rule array{C : context, fieldtype : fieldtype}: + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|`var_0*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) + -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) + -- if (|`comptype'*`| = |`x'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} + -- if (|x*{x <- `x*`}| <= 1) + -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`x'**`|) + -- (if (var_0 = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `x'*` <- `x'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_oktypeidx: `%`(OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx(($proj_uN_0(x).0 + 1)))) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 + rule _rec2{C : context, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) + -- wf_context: `%`(C) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- wf_context: `%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, 0)) + -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 + rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype, `var_0*` : subtype*}: + `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- if (|`var_0*`| = |`typeuse*`|) + -- (fun_unrollht: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- if (|`comptype'*`| = |`typeuse'**`|) + -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) + -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`typeuse'**`|) + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} + -- Comptype_ok: `%|-%:OK`(C, comptype) + -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:91.1-91.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 + rule empty{C : context, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) + -- wf_context: `%`(C) + -- wf_subtype: `%`(subtype_1) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(x, i)) + -- wf_oktypeidxnat: `%`(OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) + -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx(($proj_uN_0(x).0 + 1)), (i + 1))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.102 +relation Deftype_ok: `%|-%:OK`(context, deftype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 + rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + `%|-%:OK`(C, _DEF_deftype(rectype, i)) + -- wf_context: `%`(C) + -- (wf_subtype: `%`(subtype))*{subtype <- `subtype*`} + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) + -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- if (i < n) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:95.1-95.108 +relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + -- if (|`ft_1*`| = |`ft_2*`|) + -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) + -- wf_context: `%`(C) + -- wf_comptype: `%`(ARRAY_comptype(ft_1)) + -- wf_comptype: `%`(ARRAY_comptype(ft_2)) + -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) + -- wf_context: `%`(C) + -- if (var_0 = var_1) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: + `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_unrolldt: `%%`(deftype_1, var_0) + -- wf_context: `%`(C) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (i < |typeuse*{typeuse <- `typeuse*`}|) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + rule refl{C : context, heaptype : heaptype}: + `%|-%<:%`(C, heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: + `%|-%<:%`(C, heaptype_1, heaptype_2) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype_1) + -- wf_heaptype: `%`(heaptype_2) + -- wf_heaptype: `%`(heaptype') + -- Heaptype_ok: `%|-%:OK`(C, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') + -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + rule `eq-any`{C : context}: + `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(EQ_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + rule `i31-eq`{C : context}: + `%|-%<:%`(C, I31_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(I31_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + rule `struct-eq`{C : context}: + `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + rule `array-eq`{C : context}: + `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_heaptype: `%`(EQ_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), STRUCT_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(STRUCT_heaptype) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: + `%|-%<:%`(C, $heaptype_deftype(deftype), ARRAY_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(ARRAY_heaptype) + -- wf_comptype: `%`(ARRAY_comptype(fieldtype)) + -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, $heaptype_deftype(deftype), FUNC_heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(FUNC_heaptype) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $heaptype_deftype(deftype_1), $heaptype_deftype(deftype_2)) + -- wf_context: `%`(C) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: + `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- Heaptype_sub: `%|-%<:%`(C, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0]), heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: + `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(_IDX_heaptype(typeidx)) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, $heaptype_deftype(C.TYPES_context[$proj_uN_0(typeidx).0])) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 + rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, REC_heaptype(i), $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[j])) + -- if (j < |typeuse*{typeuse <- `typeuse*`}|) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(REC_heaptype(i)) + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (i < |C.RECS_context|) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + rule none{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NONE_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NONE_heaptype) + -- wf_heaptype: `%`(ANY_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + rule nofunc{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOFUNC_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOFUNC_heaptype) + -- wf_heaptype: `%`(FUNC_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + rule noexn{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXN_heaptype) + -- wf_heaptype: `%`(EXN_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + rule noextern{C : context, heaptype : heaptype}: + `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(NOEXTERN_heaptype) + -- wf_heaptype: `%`(EXTERN_heaptype) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + rule bot{C : context, heaptype : heaptype}: + `%|-%<:%`(C, BOT_heaptype, heaptype) + -- wf_context: `%`(C) + -- wf_heaptype: `%`(heaptype) + -- wf_heaptype: `%`(BOT_heaptype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, REF_reftype(?(NULL_null), ht_1), REF_reftype(?(NULL_null), ht_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_1)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht_2)) + -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: + `%|-%<:%`(C, $valtype_numtype(numtype_1), $valtype_numtype(numtype_2)) + -- wf_context: `%`(C) + -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: + `%|-%<:%`(C, $valtype_vectype(vectype_1), $valtype_vectype(vectype_2)) + -- wf_context: `%`(C) + -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: + `%|-%<:%`(C, $valtype_reftype(reftype_1), $valtype_reftype(reftype_2)) + -- wf_context: `%`(C) + -- wf_reftype: `%`(reftype_1) + -- wf_reftype: `%`(reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + rule bot{C : context, valtype : valtype}: + `%|-%<:%`(C, BOT_valtype, valtype) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype) + -- wf_valtype: `%`(BOT_valtype) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t_1))*{t_1 <- `t_1*`} + -- (wf_valtype: `%`(t_2))*{t_2 <- `t_2*`} + -- if (|`t_1*`| = |`t_2*`|) + -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, $storagetype_valtype(valtype_1), $storagetype_valtype(valtype_2)) + -- wf_context: `%`(C) + -- wf_valtype: `%`(valtype_1) + -- wf_valtype: `%`(valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: + `%|-%<:%`(C, $storagetype_packtype(packtype_1), $storagetype_packtype(packtype_2)) + -- wf_context: `%`(C) + -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) + -- wf_context: `%`(C) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_1)) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt_2)) + -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) +} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Instrtype_ok: `%|-%:OK`(context, instrtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_localtype: `%`(lct))*{lct <- `lct*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- if (|`lct*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = lct))*{lct <- `lct*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Expand_use: `%~~_%%`(typeuse, context, comptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule deftype{deftype : deftype, C : context, comptype : comptype}: + `%~~_%%`($typeuse_deftype(deftype), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- Expand: `%~~%`(deftype, comptype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: + `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) + -- wf_context: `%`(C) + -- wf_comptype: `%`(comptype) + -- wf_typeuse: `%`(_IDX_typeuse(typeidx)) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], comptype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Limits_ok: `%|-%:%`(context, limits, nat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, n : n, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})) + -- if (n <= k) + -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tagtype_ok: `%|-%:OK`(context, tagtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, typeuse) + -- wf_context: `%`(C) + -- wf_typeuse: `%`(typeuse) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Globaltype_ok: `%|-%:OK`(context, globaltype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype(?(MUT_mut), t)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- Valtype_ok: `%|-%:OK`(C, t) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Memtype_ok: `%|-%:OK`(context, memtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Tabletype_ok: `%|-%:OK`(context, tabletype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits, reftype)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Reftype_ok: `%|-%:OK`(C, reftype) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Externtype_ok: `%|-%:OK`(context, externtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule tag{C : context, tagtype : tagtype}: + `%|-%:OK`(C, TAG_externtype(tagtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule global{C : context, globaltype : globaltype}: + `%|-%:OK`(C, GLOBAL_externtype(globaltype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule mem{C : context, memtype : memtype}: + `%|-%:OK`(C, MEM_externtype(memtype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule table{C : context, tabletype : tabletype}: + `%|-%:OK`(C, TABLE_externtype(tabletype)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, FUNC_externtype(typeuse)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype(typeuse)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Typeuse_ok: `%|-%:OK`(C, typeuse) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- wf_context: `%`(C) + -- (wf_uN: `%%`(32, x))*{x <- `x*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) + -- if (|`t*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.LOCALS_context|))*{x <- `x*`} + -- (if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Limits_sub: `%|-%<:%`(context, limits, limits) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?()), `[%..%]`_limits(`%`_u64(n_2), ?())) + -- wf_context: `%`(C) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_1), ?())) + -- wf_limits: `%`(`[%..%]`_limits(`%`_u64(n_2), ?())) + -- if (n_1 >= n_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, $typeuse_deftype(deftype_1), $typeuse_deftype(deftype_2)) + -- wf_context: `%`(C) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) + -- wf_context: `%`(C) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_1)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), valtype_2)) + -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) + -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) + -- wf_context: `%`(C) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(addrtype, limits_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- wf_context: `%`(C) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_1, reftype_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(addrtype, limits_2, reftype_2)) + -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) + -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) + +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TAG_externtype(tagtype_1)) + -- wf_externtype: `%`(TAG_externtype(tagtype_2)) + -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_1)) + -- wf_externtype: `%`(GLOBAL_externtype(globaltype_2)) + -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(MEM_externtype(memtype_1)) + -- wf_externtype: `%`(MEM_externtype(memtype_2)) + -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) + -- wf_context: `%`(C) + -- wf_externtype: `%`(TABLE_externtype(tabletype_1)) + -- wf_externtype: `%`(TABLE_externtype(tabletype_2)) + -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: + `%|-%<:%`(C, FUNC_externtype($typeuse_deftype(deftype_1)), FUNC_externtype($typeuse_deftype(deftype_2))) + -- wf_context: `%`(C) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_1))) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(deftype_2))) + -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule valtype{C : context, `valtype?` : valtype?}: + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_blocktype: `%`(_IDX_blocktype(typeidx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(typeidx).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Catch_ok: `%|-%:OK`(context, catch) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: + `%|-%:OK`(C, CATCH_REF_catch(x, l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_REF_catch(x, l)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_catch(l)) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[$proj_uN_0(l).0]) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule catch_all_ref{C : context, l : labelidx}: + `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) + -- wf_context: `%`(C) + -- wf_catch: `%`(CATCH_ALL_REF_catch(l)) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation fun_default_: `%%`(valtype, val?) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_0: + `%%`(I32_valtype, ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_1: + `%%`(I64_valtype, ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) + -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_4: + `%%`(V128_valtype, ?(VCONST_val(V128_vectype, `%`_vec_(0)))) + -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(REF.NULL_val(ht))) + -- wf_val: `%`(REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?()) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_7: + `%%`(BOT_valtype, ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Defaultable: `|-%DEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype, var_0 : val?}: + `|-%DEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) + -- wf_valtype: `%`(t) + -- if (var_0 =/= ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}, at, N) + -- wf_memarg: `%`({ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size($numtype_addrtype(at)))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation fun_is_packtype: `%%`(storagetype, bool) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt = $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +relation Instr_ok: `%|-%:%`(context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + rule nop{C : context}: + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(NOP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + rule drop{C : context, t : valtype}: + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DROP_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + rule `select-expl`{C : context, t : valtype}: + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(SELECT_instr(?([t]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_valtype: `%`(t') + -- wf_instr: `%`(SELECT_instr(?())) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Valtype_sub: `%|-%<:%`(C, t, t') + -- if ((t' = $valtype_numtype(numtype)) \/ (t' = $valtype_vectype(vectype))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BLOCK_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOOP_instr(bt, instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + rule br_if{C : context, l : labelidx, `t*` : valtype*}: + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (if ($proj_uN_0(l).0 < |C.LABELS_context|))*{l <- `l*`} + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]))*{l <- `l*`} + -- if ($proj_uN_0(l').0 < |C.LABELS_context|) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l').0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if ($proj_list_0(syntax valtype, C.LABELS_context[$proj_uN_0(l).0]).0 = t*{t <- `t*`}) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- if ($proj_uN_0(l).0 < |C.LABELS_context|) + -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) + -- Reftype_ok: `%|-%:OK`(C, rt_1) + -- Reftype_ok: `%|-%:OK`(C, rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: + `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RETURN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 + rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_REF_instr(_IDX_typeuse(x))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 + rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_context: `%`(C) + -- (wf_valtype: `%`(t'_2))*{t'_2 <- `t'_2*`} + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [$valtype_addrtype(at)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) + -- if ($proj_uN_0(y).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(y).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 + rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(THROW_REF_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: + `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:202.1-204.31 + rule ref.null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + rule ref.func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), $heaptype_deftype(dt))]))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + -- if (|C.REFS_context| > 0) + -- if (x <- C.REFS_context) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + rule ref.i31{C : context}: + `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + rule ref.is_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + rule ref.as_non_null{C : context, ht : heaptype}: + `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + -- Heaptype_ok: `%|-%:OK`(C, ht) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + rule ref.eq{C : context}: + `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + rule ref.test{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.TEST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([I32_valtype]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + rule ref.cast{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.CAST_instr(rt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt')]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- Reftype_ok: `%|-%:OK`(C, rt) + -- Reftype_ok: `%|-%:OK`(C, rt') + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + rule i31.get{C : context, sx : sx}: + `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: + `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|`var_0*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: + `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|`var_0*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- `var_0*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 + rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> var_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.SET_instr(x, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) + -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) + -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Defaultable: `|-%DEFAULTABLE`(var_0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, $storagetype_reftype(rt)))) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 + rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((sx?{sx <- `sx?`} = ?()) <=> var_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + rule array.set{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + rule array.len{C : context}: + `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.LEN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + rule array.fill{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($proj_uN_0(x_1).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_1).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) + -- if ($proj_uN_0(x_2).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x_2).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + rule local.get{C : context, x : idx, t : valtype}: + `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(SET_init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + rule local.set{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + rule local.tee{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + -- wf_localtype: `%`(`%%`_localtype(init, t)) + -- if ($proj_uN_0(x).0 < |C.LOCALS_context|) + -- if (C.LOCALS_context[$proj_uN_0(x).0] = `%%`_localtype(init, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + rule global.set{C : context, x : idx, t : valtype}: + `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(MUT_mut), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_reftype(rt)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([I32_valtype]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_reftype(rt) $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TABLE.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at_1, lim_1, rt_1)) + -- wf_tabletype: `%`(`%%%`_tabletype(at_2, lim_2, rt_2)) + -- if ($proj_uN_0(x_1).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x_1).0] = `%%%`_tabletype(at_1, lim_1, rt_1)) + -- if ($proj_uN_0(x_2).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x_2).0] = `%%%`_tabletype(at_2, lim_2, rt_2)) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt_2) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt_1)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt_1)) + -- if ($proj_uN_0(y).0 < |C.ELEMS_context|) + -- if (C.ELEMS_context[$proj_uN_0(y).0] = rt_2) + -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + rule elem.drop{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.ELEMS_context|) + -- if (C.ELEMS_context[$proj_uN_0(x).0] = rt) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.SIZE_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule memory.grow{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.GROW_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(at)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule memory.fill{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype $valtype_addrtype(at)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule memory.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, MEMORY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at_1) $valtype_addrtype(at_2) $valtype_addrtype($minat(at_1, at_2))]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_1, lim_1)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at_2, lim_2)) + -- if ($proj_uN_0(x_1).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x_1).0] = `%%PAGE`_memtype(at_1, lim_1)) + -- if ($proj_uN_0(x_2).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x_2).0] = `%%PAGE`_memtype(at_2, lim_2)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule memory.init{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, MEMORY.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(y).0 < |C.DATAS_context|) + -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule data.drop{C : context, x : idx}: + `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(DATA.DROP_instr(x)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.DATAS_context|) + -- if (C.DATAS_context[$proj_uN_0(x).0] = OK_datatype) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(M), sx))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([$valtype_addrtype(Inn)]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 + rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr(nt, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_numtype(nt)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(M)))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) $valtype_addrtype(Inn)]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, M) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 + rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, (M * N)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 + rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at)]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_instr(V128_vectype, x, memarg)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: + `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_addrtype(at) V128_valtype]), [], `%`_resulttype([]))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) + -- if (($proj_uN_0(i).0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + rule unop{C : context, nt : numtype, unop_nt : unop_}: + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(UNOP_instr(nt, unop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + rule binop{C : context, nt : numtype, binop_nt : binop_}: + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr(nt, binop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([$valtype_numtype(nt)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + rule testop{C : context, nt : numtype, testop_nt : testop_}: + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(TESTOP_instr(nt, testop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + rule relop{C : context, nt : numtype, relop_nt : relop_}: + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(RELOP_instr(nt, relop_nt)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt) $valtype_numtype(nt)]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__}: + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(CVTOP_instr(nt_1, nt_2, cvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype(nt_2)]), [], `%`_resulttype([$valtype_numtype(nt_1)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + rule vconst{C : context, c : vec_}: + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + rule vvunop{C : context, vvunop : vvunop}: + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + rule vvbinop{C : context, vvbinop : vvbinop}: + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + rule vvternop{C : context, vvternop : vvternop}: + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + rule vvtestop{C : context, vvtestop : vvtestop}: + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, vvtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + rule vunop{C : context, sh : shape, vunop : vunop_}: + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + rule vbinop{C : context, sh : shape, vbinop : vbinop_}: + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + rule vternop{C : context, sh : shape, vternop : vternop_}: + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + rule vtestop{C : context, sh : shape, vtestop : vtestop_}: + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VTESTOP_instr(sh, vtestop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + rule vrelop{C : context, sh : shape, vrelop : vrelop_}: + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_}: + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + rule vbitmask{C : context, sh : ishape}: + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_}: + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, vswizzlop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*, var_0 : dim}: + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- `i*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + rule vsplat{C : context, sh : shape}: + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VSPLAT_instr(sh)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- fun_dim: `%%`(sh, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- fun_dim: `%%`(sh, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTUNOP_instr(sh_1, sh_2, vextunop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__}: + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTBINOP_instr(sh_1, sh_2, vextbinop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__}: + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_1, sh_2, vextternop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VNARROW_instr(sh_1, sh_2, sx)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__}: + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCVTOP_instr(sh_1, sh_2, vcvtop)) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + rule empty{C : context}: + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + -- wf_context: `%`(C) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) + -- wf_context: `%`(C) + -- wf_instr: `%`(instr_1) + -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`t*`|) + -- (wf_localtype: `%`(`%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`} + -- (wf_localtype: `%`(`%%`_localtype(SET_init, t)))*{t <- `t*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`init*`| = |`x_1*`|) + -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} + -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`(var_0, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 + rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%|-%:%`(C, instr*{instr <- `instr*`}, it') + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(it') + -- wf_instrtype: `%`(it) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 + rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) +} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok: `%|-%:%`(context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*, `t*` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{t : valtype, var_0 : val?}: + `|-%NONDEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) + -- wf_valtype: `%`(t) + -- if (var_0 = ?()) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Instr_const: `%|-%CONST`(context, instr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule const{C : context, nt : numtype, c_nt : num_}: + `%|-%CONST`(C, CONST_instr(nt, c_nt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(CONST_instr(nt, c_nt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule vconst{C : context, vt : vectype, c_vt : vec_}: + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) + -- wf_context: `%`(C) + -- wf_instr: `%`(VCONST_instr(vt, c_vt)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.null{C : context, ht : heaptype}: + `%|-%CONST`(C, REF.NULL_instr(ht)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.NULL_instr(ht)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.i31{C : context}: + `%|-%CONST`(C, REF.I31_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.I31_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule ref.func{C : context, x : idx}: + `%|-%CONST`(C, REF.FUNC_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(REF.FUNC_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule struct.new_default{C : context, x : idx}: + `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_default{C : context, x : idx}: + `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule array.new_fixed{C : context, x : idx, n : n}: + `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_context: `%`(C) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule any.convert_extern{C : context}: + `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule extern.convert_any{C : context}: + `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + -- wf_context: `%`(C) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule global.get{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, GLOBAL.GET_instr(x)) + -- wf_context: `%`(C) + -- wf_instr: `%`(GLOBAL.GET_instr(x)) + -- wf_globaltype: `%`(`%%`_globaltype(?(), t)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(), t)) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule binop{C : context, Inn : Inn, binop : binop_}: + `%|-%CONST`(C, BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_context: `%`(C) + -- wf_instr: `%`(BINOP_instr($numtype_addrtype(Inn), binop)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, ADD_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, SUB_binop_Inn)) + -- wf_binop_: `%%`($numtype_addrtype(Inn), mk_binop__0_binop_(Inn, MUL_binop_Inn)) + -- if (Inn <- [I32_Inn I64_Inn]) + -- if (binop <- [mk_binop__0_binop_(Inn, ADD_binop_Inn) mk_binop__0_binop_(Inn, SUB_binop_Inn) mk_binop__0_binop_(Inn, MUL_binop_Inn)]) + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_const: `%|-%CONST`(context, expr) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, `instr*` : instr*}: + `%|-%CONST`(C, instr*{instr <- `instr*`}) + -- wf_context: `%`(C) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{C : context, expr : expr, t : valtype}: + `%|-%:%CONST`(C, expr, t) + -- wf_context: `%`(C) + -- (wf_instr: `%`(expr))*{expr <- expr} + -- wf_valtype: `%`(t) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_const: `%|-%CONST`(C, expr) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Type_ok: `%|-%:%`(context, type, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: + `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- fun_rolldt: `%%%`(x, rectype, var_0) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_oktypeidx: `%`(OK_oktypeidx(x)) + -- if ($proj_uN_0(x).0 = |C.TYPES_context|) + -- if (dt*{dt <- `dt*`} = var_0) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Tag_ok: `%|-%:%`(context, tag, tagtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) + -- wf_context: `%`(C) + -- wf_tag: `%`(TAG_tag(tagtype)) + -- Tagtype_ok: `%|-%:OK`(C, tagtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Global_ok: `%|-%:%`(context, global, globaltype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) + -- wf_context: `%`(C) + -- wf_global: `%`(GLOBAL_global(globaltype, expr)) + -- wf_globaltype: `%`(`%%`_globaltype(?(MUT_mut), t)) + -- Globaltype_ok: `%|-%:OK`(C, globaltype) + -- if (globaltype = `%%`_globaltype(?(MUT_mut), t)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Mem_ok: `%|-%:%`(context, mem, memtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, memtype : memtype}: + `%|-%:%`(C, MEMORY_mem(memtype), memtype) + -- wf_context: `%`(C) + -- wf_mem: `%`(MEMORY_mem(memtype)) + -- Memtype_ok: `%|-%:OK`(C, memtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Table_ok: `%|-%:%`(context, table, tabletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) + -- wf_context: `%`(C) + -- wf_table: `%`(TABLE_table(tabletype, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- Tabletype_ok: `%|-%:OK`(C, tabletype) + -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(rt)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Local_ok: `%|-%:%`(context, local, localtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule set{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(SET_init, t)) + -- Defaultable: `|-%DEFAULTABLE`(t) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule unset{C : context, t : valtype}: + `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) + -- wf_context: `%`(C) + -- wf_local: `%`(LOCAL_local(t)) + -- wf_localtype: `%`(`%%`_localtype(UNSET_init, t)) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Func_ok: `%|-%:%`(context, func, deftype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: + `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[$proj_uN_0(x).0]) + -- if ($proj_uN_0(x).0 < |C.TYPES_context|) + -- wf_context: `%`(C) + -- wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}) + -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`lct*`| = |`local*`|) + -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Datamode_ok: `%|-%:%`(context, datamode, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context}: + `%|-%:%`(C, PASSIVE_datamode, OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(PASSIVE_datamode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: + `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) + -- wf_context: `%`(C) + -- wf_datamode: `%`(ACTIVE_datamode(x, expr)) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = `%%PAGE`_memtype(at, lim)) + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Data_ok: `%|-%:%`(context, data, datatype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) + -- wf_context: `%`(C) + -- wf_data: `%`(DATA_data(b*{b <- `b*`}, datamode)) + -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule passive{C : context, rt : reftype}: + `%|-%:%`(C, PASSIVE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(PASSIVE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule declare{C : context, rt : reftype}: + `%|-%:%`(C, DECLARE_elemmode, rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(DECLARE_elemmode) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) + -- wf_context: `%`(C) + -- wf_reftype: `%`(rt) + -- wf_elemmode: `%`(ACTIVE_elemmode(x, expr)) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt')) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = `%%%`_tabletype(at, lim, rt')) + -- Reftype_sub: `%|-%<:%`(C, rt, rt') + -- Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_addrtype(at)) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Elem_ok: `%|-%:%`(context, elem, elemtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + -- wf_context: `%`(C) + -- wf_elem: `%`(ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode)) + -- Reftype_ok: `%|-%:OK`(C, elemtype) + -- (Expr_ok_const: `%|-%:%CONST`(C, expr, $valtype_reftype(elemtype)))*{expr <- `expr*`} + -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Start_ok: `%|-%:OK`(context, start) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, x : idx}: + `%|-%:OK`(C, START_start(x)) + -- wf_context: `%`(C) + -- wf_start: `%`(START_start(x)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- Expand: `%~~%`(C.FUNCS_context[$proj_uN_0(x).0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Import_ok: `%|-%:%`(context, import, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- fun_clos_externtype: `%%%`(C, xt, var_0) + -- wf_context: `%`(C) + -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) + -- Externtype_ok: `%|-%:OK`(C, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Externidx_ok: `%|-%:%`(context, externidx, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule tag{C : context, x : idx, jt : tagtype}: + `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TAG_externidx(x)) + -- wf_externtype: `%`(TAG_externtype(jt)) + -- if ($proj_uN_0(x).0 < |C.TAGS_context|) + -- if (C.TAGS_context[$proj_uN_0(x).0] = jt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule global{C : context, x : idx, gt : globaltype}: + `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(GLOBAL_externidx(x)) + -- wf_externtype: `%`(GLOBAL_externtype(gt)) + -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[$proj_uN_0(x).0] = gt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule mem{C : context, x : idx, mt : memtype}: + `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(MEM_externidx(x)) + -- wf_externtype: `%`(MEM_externtype(mt)) + -- if ($proj_uN_0(x).0 < |C.MEMS_context|) + -- if (C.MEMS_context[$proj_uN_0(x).0] = mt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule table{C : context, x : idx, tt : tabletype}: + `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) + -- wf_context: `%`(C) + -- wf_externidx: `%`(TABLE_externidx(x)) + -- wf_externtype: `%`(TABLE_externtype(tt)) + -- if ($proj_uN_0(x).0 < |C.TABLES_context|) + -- if (C.TABLES_context[$proj_uN_0(x).0] = tt) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule func{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype($typeuse_deftype(dt))) + -- wf_context: `%`(C) + -- wf_externidx: `%`(FUNC_externidx(x)) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(dt))) + -- if ($proj_uN_0(x).0 < |C.FUNCS_context|) + -- if (C.FUNCS_context[$proj_uN_0(x).0] = dt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Export_ok: `%|-%:%%`(context, export, name, externtype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{C : context, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) + -- wf_context: `%`(C) + -- wf_externtype: `%`(xt) + -- wf_export: `%`(EXPORT_export(name, externidx)) + -- Externidx_ok: `%|-%:%`(C, externidx, xt) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +relation Globals_ok: `%|-%:%`(context, global*, globaltype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: + `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) + -- wf_context: `%`(C) + -- wf_global: `%`(global_1) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_globaltype: `%`(gt))*{gt <- `gt*`} + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Global_ok: `%|-%:%`(C, global_1, gt_1) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +relation Types_ok: `%|-%:%`(context, type*, deftype*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + rule empty{C : context}: + `%|-%:%`(C, [], []) + -- wf_context: `%`(C) + + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: + `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) + -- wf_context: `%`(C) + -- wf_context: `%`({TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) +} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +syntax nonfuncs = + | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation wf_nonfuncs: `%`(nonfuncs) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}: + `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) + -- (wf_global: `%`(global))*{global <- `global*`} + -- (wf_mem: `%`(mem))*{mem <- `mem*`} + -- (wf_table: `%`(table))*{table <- `table*`} + -- (wf_elem: `%`(elem))*{elem <- `elem*`} + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, var_0 : funcidx*}: + `%%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), []), var_0) + -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +relation Module_ok: `|-%:%`(module, moduletype) + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) + -- fun_funcidx_nonfuncs: `%%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) + -- wf_context: `%`(C) + -- wf_context: `%`(C') + -- (wf_name: `%`(nm))*{nm <- `nm*`} + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- wf_context: `%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- wf_nonfuncs: `%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) + -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- if (|`import*`| = |`xt_I*`|) + -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- if (|`jt*`| = |`tag*`|) + -- (Tag_ok: `%|-%:%`(C', tag, jt))*{jt <- `jt*`, tag <- `tag*`} + -- Globals_ok: `%|-%:%`(C', global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- if (|`mem*`| = |`mt*`|) + -- (Mem_ok: `%|-%:%`(C', mem, mt))*{mem <- `mem*`, mt <- `mt*`} + -- if (|`table*`| = |`tt*`|) + -- (Table_ok: `%|-%:%`(C', table, tt))*{table <- `table*`, tt <- `tt*`} + -- if (|`dt*`| = |`func*`|) + -- (Func_ok: `%|-%:%`(C, func, dt))*{dt <- `dt*`, func <- `func*`} + -- if (|`data*`| = |`ok*`|) + -- (Data_ok: `%|-%:%`(C, data, ok))*{data <- `data*`, ok <- `ok*`} + -- if (|`elem*`| = |`rt*`|) + -- (Elem_ok: `%|-%:%`(C, elem, rt))*{elem <- `elem*`, rt <- `rt*`} + -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} + -- if (|`export*`| = |`nm*`|) + -- if (|`export*`| = |`xt_E*`|) + -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} + -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) + -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) + -- if (x*{x <- `x*`} = var_1) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed2 = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed2_0(x : relaxed2) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed2_0{v_num_0 : nat}(`%`_relaxed2(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed2: `%`(relaxed2) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed2_case_0{i : nat}: + `%`(`%`_relaxed2(i)) + -- if ((i = 0) \/ (i = 1)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +syntax relaxed4 = + | `%`{i : nat}(i : nat) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $proj_relaxed4_0(x : relaxed4) : (nat) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $proj_relaxed4_0{v_num_0 : nat}(`%`_relaxed4(v_num_0)) = (v_num_0) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +relation wf_relaxed4: `%`(relaxed4) + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + rule relaxed4_case_0{i : nat}: + `%`(`%`_relaxed4(i)) + -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = (if $ND then [X_1 X_2][$proj_relaxed2_0(i).0] else [X_1 X_2][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = (if $ND then [X_1 X_2 X_3 X_4][$proj_relaxed4_0(i).0] else [X_1 X_2 X_3 X_4][0]) + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmadd : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmin : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_fmax : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_idot : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_iq15mulr : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_u : relaxed4 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_trunc_s : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_swizzle : relaxed2 + +;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +def $R_laneselect : relaxed2 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $s33_to_u32(s33 : s33) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibits_(N : N, iN : iN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbits_(N : N, fN : fN) : bit* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibytes_(N : N, iN : iN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fbytes_(N : N, fN : fN) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $nbytes_(numtype : numtype, num_ : num_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $vbytes_(vectype : vectype, vec_ : vec_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $zbytes_(storagetype : storagetype, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $cbytes_(Cnn : Cnn, lit_ : lit_) : byte* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibits_(N : N, bit*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbits_(N : N, bit*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_ibytes_(N : N, byte*) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_fbytes_(N : N, byte*) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_nbytes_(numtype : numtype, byte*) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_vbytes_(vectype : vectype, byte*) : vec_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_signed_: `%%%`(N, nat, int) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) + -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) + -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inv_signed_: `%%%`(N, int, nat) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) + -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sx(storagetype : storagetype) : sx?? + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F32_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(F64_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(V128_storagetype) = ?(?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I8_storagetype) = ?(?(S_sx)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_zero: `%%`(lanetype, lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $bool(bool : bool) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $truncz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ceilz(rat : rat) : int + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_u_(N : N, int : int) : nat + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : nat, i : int}(N, i) = (if (i < (0 : nat <:> int)) then 0 else (if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) then ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) else (i : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $sat_s_(N : N, int : int) : int + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : nat, i : int}(N, i) = (if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) then - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) else (if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) then (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) else i)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ineg_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : nat, i_1 : uN}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN((((((2 ^ N) : nat <:> int) - ($proj_uN_0(i_1).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iabs_(N : N, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iclz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ictz_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ipopcnt_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) + -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) \ (2 ^ N)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + -- wf_uN: `%%`(N, `%`_uN(((((((2 ^ N) + $proj_uN_0(i_1).0) : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imul_(N : N, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_iN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N))) + -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) + -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) + -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_1 + -- if ($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 + -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) + -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iavgr_(N : N, sx : sx, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $inot_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irev_(N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iand_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iandnot_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ior_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ixor_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishl_(N : N, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ishr_(N : N, sx : sx, iN : iN, u32 : u32) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotl_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irotr_(N : N, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_ieqz_: `%%%`(N, iN, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_ieqz__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 = 0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_inez_: `%%%`(N, iN, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_inez__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0)))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ieq_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 = i_2)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ine_(N : N, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : nat, i_1 : uN, i_2 : uN}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + -- wf_uN: `%%`(32, `%`_uN($bool((i_1 =/= i_2)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 < var_1)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 > var_1)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 <= var_1)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) + -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 >= var_1)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fabs_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fneg_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsqrt_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fceil_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ffloor_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $ftrunc_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fnearest_(N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fadd_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fsub_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmul_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fdiv_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmin_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fpmax_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_min_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_max_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fcopysign_(N : N, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $feq_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fne_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $flt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fgt_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fle_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $fge_(N : N, fN : fN, fN : fN) : u32 + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_madd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $frelaxed_nmadd_(N : N, fN : fN, fN : fN, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wrap__(M : M, N : N, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extend__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $trunc_sat__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN) : iN? + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $demote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $promote__(M : M, N : N, fN : fN) : fN* + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $convert__(M : M, N : N, sx : sx, iN : iN) : fN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) + -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cunpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) + -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ieq_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ine_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ilt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $igt_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ile_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = $ige_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $feq_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fne_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $flt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fgt_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fle_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) + -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) + -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) + -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) + -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) + -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) + -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $lanes_(shape : shape, vec_ : vec_) : lane_* + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $inv_lanes_(shape : shape, lane_*) : vec_ + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $half(half : half, nat : nat, nat : nat) : nat + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(LOW_half, i, j) = i + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(HIGH_half, i, j) = j + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $iswizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else `%`_iN(0)) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) + -- wf_uN: `%%`(N, `%`_uN(0)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + -- if ($isize(Inn) = $fsize(F32_Fnn)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) + -- wf_shape: `%`(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} + -- if ($isize(Inn) = $fsize(F64_Fnn)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) + -- wf_uN: `%%`(32, c) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} + -- wf_bit: `%`(`%`_bit(0)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : vectype, v : uN}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvbinop_{Vnn : vectype, v_1 : uN, v_2 : uN}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_0{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_1{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_2{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_3{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_4{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_5{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_6{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_7{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_8{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_9{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_10{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_11{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_12{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_13{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_14{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_15{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_16{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_17{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_18{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_19{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_20{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_21{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_22{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_23{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_24{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vunop__case_25{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`}) {c, `c*`, `c**`} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(half)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`}) {c, `c*`, `c**`} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} + -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) + -- if (var_0 = ?(ZERO_zero)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{}) {c, `c*`, `c**`} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) + -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) + -- wf_uN: `%%`(128, v) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivadd_pairwise_(N : N, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : nat, `i*` : iN*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, `%`_uN(j_1)))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, `%`_uN(j_2)))*{j_2 <- `j_2*`} + -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $proj_uN_0(i).0*{i <- `i*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx : sx, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivdot_sat_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivdot_sat_{N : nat, `i_1*` : iN*, `i_2*` : iN*, `j_1*` : iN*, `j_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} + -- (wf_uN: `%%`(N, j_1))*{j_1 <- `j_1*`} + -- (wf_uN: `%%`(N, j_2))*{j_2 <- `j_2*`} + -- if ($concat_(syntax iN, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : iN*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_, vec_ : vec_) : vec_ + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I32_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I64_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I8_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_1))*{c'_1 <- `c'_1*`} + -- (wf_uN: `%%`($lsize($lanetype_Jnn(I16_Jnn)), c'_2))*{c'_2 <- `c'_2*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +def $ivmul_(N : N, iN*, iN*) : iN* + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) + -- wf_uN: `%%`(8, `%`_uN(M_2)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_uN: `%%`(8, `%`_uN(0)) + -- wf_uN: `%%`(8, `%`_uN(M_1)) + +;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) + -- wf_uN: `%%`(128, c) + -- wf_uN: `%%`(128, c') + -- wf_uN: `%%`(128, c'') + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)))) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)))) + -- wf_vextbinop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) + -- wf_ishape: `%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)))) + -- wf_vextunop__: `%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) + -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax num = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + +def $val_num(num) : val + def $val_num{x0 : numtype, x1 : num_}(CONST_num(x0, x1)) = CONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_num: `%`(num) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule num_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_num(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax vec = + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + +def $val_vec(vec) : val + def $val_vec{x0 : vectype, x1 : vec_}(VCONST_vec(x0, x1)) = VCONST_val(x0, x1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_vec: `%`(vec) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule vec_case_0{vectype : vectype, vec_ : vec_}: + `%`(VCONST_vec(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax ref = + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + +def $ref_addrref(addrref) : ref + def $ref_addrref{x0 : u31}(REF.I31_NUM_addrref(x0)) = REF.I31_NUM_ref(x0) + def $ref_addrref{x0 : structaddr}(REF.STRUCT_ADDR_addrref(x0)) = REF.STRUCT_ADDR_ref(x0) + def $ref_addrref{x0 : arrayaddr}(REF.ARRAY_ADDR_addrref(x0)) = REF.ARRAY_ADDR_ref(x0) + def $ref_addrref{x0 : funcaddr}(REF.FUNC_ADDR_addrref(x0)) = REF.FUNC_ADDR_ref(x0) + def $ref_addrref{x0 : exnaddr}(REF.EXN_ADDR_addrref(x0)) = REF.EXN_ADDR_ref(x0) + def $ref_addrref{x0 : hostaddr}(REF.HOST_ADDR_addrref(x0)) = REF.HOST_ADDR_ref(x0) + def $ref_addrref{x0 : addrref}(REF.EXTERN_addrref(x0)) = REF.EXTERN_ref(x0) + +def $instr_ref(ref) : instr + def $instr_ref{x0 : u31}(REF.I31_NUM_ref(x0)) = REF.I31_NUM_instr(x0) + def $instr_ref{x0 : structaddr}(REF.STRUCT_ADDR_ref(x0)) = REF.STRUCT_ADDR_instr(x0) + def $instr_ref{x0 : arrayaddr}(REF.ARRAY_ADDR_ref(x0)) = REF.ARRAY_ADDR_instr(x0) + def $instr_ref{x0 : funcaddr}(REF.FUNC_ADDR_ref(x0)) = REF.FUNC_ADDR_instr(x0) + def $instr_ref{x0 : exnaddr}(REF.EXN_ADDR_ref(x0)) = REF.EXN_ADDR_instr(x0) + def $instr_ref{x0 : hostaddr}(REF.HOST_ADDR_ref(x0)) = REF.HOST_ADDR_instr(x0) + def $instr_ref{x0 : addrref}(REF.EXTERN_ref(x0)) = REF.EXTERN_instr(x0) + def $instr_ref{x0 : heaptype}(REF.NULL_ref(x0)) = REF.NULL_instr(x0) + +def $val_ref(ref) : val + def $val_ref{x0 : u31}(REF.I31_NUM_ref(x0)) = REF.I31_NUM_val(x0) + def $val_ref{x0 : structaddr}(REF.STRUCT_ADDR_ref(x0)) = REF.STRUCT_ADDR_val(x0) + def $val_ref{x0 : arrayaddr}(REF.ARRAY_ADDR_ref(x0)) = REF.ARRAY_ADDR_val(x0) + def $val_ref{x0 : funcaddr}(REF.FUNC_ADDR_ref(x0)) = REF.FUNC_ADDR_val(x0) + def $val_ref{x0 : exnaddr}(REF.EXN_ADDR_ref(x0)) = REF.EXN_ADDR_val(x0) + def $val_ref{x0 : hostaddr}(REF.HOST_ADDR_ref(x0)) = REF.HOST_ADDR_val(x0) + def $val_ref{x0 : addrref}(REF.EXTERN_ref(x0)) = REF.EXTERN_val(x0) + def $val_ref{x0 : heaptype}(REF.NULL_ref(x0)) = REF.NULL_val(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_ref: `%`(ref) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_0{u31 : u31}: + `%`(REF.I31_NUM_ref(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_1{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_ref(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_2{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_ref(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_3{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_ref(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_4{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_ref(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_5{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_ref(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_6{addrref : addrref}: + `%`(REF.EXTERN_ref(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule ref_case_7{heaptype : heaptype}: + `%`(REF.NULL_ref(heaptype)) + -- wf_heaptype: `%`(heaptype) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax result = + | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) + | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | TRAP + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_result: `%`(result) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_0{`val*` : val*}: + `%`(_VALS_result(val*{val <- `val*`})) + -- (wf_val: `%`(val))*{val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_1{exnaddr : exnaddr}: + `%`(`(REF.EXN_ADDR%)THROW_REF`_result(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule result_case_2: + `%`(TRAP_result) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostfunc = + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funccode = + | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | `...` + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funccode: `%`(funccode) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_0{typeidx : typeidx, `local*` : local*, expr : expr}: + `%`(FUNC_funccode(typeidx, local*{local <- `local*`}, expr)) + -- wf_uN: `%%`(32, typeidx) + -- (wf_local: `%`(local))*{local <- `local*`} + -- (wf_instr: `%`(expr))*{expr <- expr} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funccode_case_1: + `%`(`...`_funccode) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax taginst = +{ + TYPE{tagtype : tagtype} tagtype +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_taginst: `%`(taginst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule taginst_case_{var_0 : tagtype}: + `%`({TYPE var_0}) + -- wf_typeuse: `%`(var_0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax globalinst = +{ + TYPE{globaltype : globaltype} globaltype, + VALUE{val : val} val +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_globalinst: `%`(globalinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule globalinst_case_{var_0 : globaltype, var_1 : val}: + `%`({TYPE var_0, VALUE var_1}) + -- wf_globaltype: `%`(var_0) + -- wf_val: `%`(var_1) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax meminst = +{ + TYPE{memtype : memtype} memtype, + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_meminst: `%`(meminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule meminst_case_{var_0 : memtype, var_1 : byte*}: + `%`({TYPE var_0, BYTES var_1}) + -- wf_memtype: `%`(var_0) + -- (wf_byte: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax tableinst = +{ + TYPE{tabletype : tabletype} tabletype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_tableinst: `%`(tableinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule tableinst_case_{var_0 : tabletype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_tabletype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcinst = +{ + TYPE{deftype : deftype} deftype, + MODULE{moduleinst : moduleinst} moduleinst, + CODE{funccode : funccode} funccode +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_funcinst: `%`(funcinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule funcinst_case_{var_0 : deftype, var_1 : moduleinst, var_2 : funccode}: + `%`({TYPE var_0, MODULE var_1, CODE var_2}) + -- wf_moduleinst: `%`(var_1) + -- wf_funccode: `%`(var_2) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax datainst = +{ + BYTES{`byte*` : byte*} byte* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_datainst: `%`(datainst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule datainst_case_{var_0 : byte*}: + `%`({BYTES var_0}) + -- (wf_byte: `%`(var_0))*{var_0 <- var_0} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax eleminst = +{ + TYPE{elemtype : elemtype} elemtype, + REFS{`ref*` : ref*} ref* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_eleminst: `%`(eleminst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule eleminst_case_{var_0 : elemtype, var_1 : ref*}: + `%`({TYPE var_0, REFS var_1}) + -- wf_reftype: `%`(var_0) + -- (wf_ref: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax packval = + | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_packval: `%`(packval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule packval_case_0{packtype : packtype, iN : iN}: + `%`(PACK_packval(packtype, iN)) + -- wf_uN: `%%`($psize(packtype), iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax fieldval = + | CONST{numtype : numtype, num_ : num_}(numtype : numtype, num_ : num_) + | VCONST{vectype : vectype, vec_ : vec_}(vectype : vectype, vec_ : vec_) + | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | REF.I31_NUM{u31 : u31}(u31 : u31) + | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) + | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) + | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) + | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) + | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) + | REF.EXTERN{addrref : addrref}(addrref : addrref) + | PACK{packtype : packtype, iN : iN}(packtype : packtype, iN : iN) + +def $fieldval_val(val) : fieldval + def $fieldval_val{x0 : numtype, x1 : num_}(CONST_val(x0, x1)) = CONST_fieldval(x0, x1) + def $fieldval_val{x0 : vectype, x1 : vec_}(VCONST_val(x0, x1)) = VCONST_fieldval(x0, x1) + def $fieldval_val{x0 : heaptype}(REF.NULL_val(x0)) = REF.NULL_fieldval(x0) + def $fieldval_val{x0 : u31}(REF.I31_NUM_val(x0)) = REF.I31_NUM_fieldval(x0) + def $fieldval_val{x0 : structaddr}(REF.STRUCT_ADDR_val(x0)) = REF.STRUCT_ADDR_fieldval(x0) + def $fieldval_val{x0 : arrayaddr}(REF.ARRAY_ADDR_val(x0)) = REF.ARRAY_ADDR_fieldval(x0) + def $fieldval_val{x0 : funcaddr}(REF.FUNC_ADDR_val(x0)) = REF.FUNC_ADDR_fieldval(x0) + def $fieldval_val{x0 : exnaddr}(REF.EXN_ADDR_val(x0)) = REF.EXN_ADDR_fieldval(x0) + def $fieldval_val{x0 : hostaddr}(REF.HOST_ADDR_val(x0)) = REF.HOST_ADDR_fieldval(x0) + def $fieldval_val{x0 : addrref}(REF.EXTERN_val(x0)) = REF.EXTERN_fieldval(x0) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_fieldval: `%`(fieldval) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_0{numtype : numtype, num_ : num_}: + `%`(CONST_fieldval(numtype, num_)) + -- wf_num_: `%%`(numtype, num_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_1{vectype : vectype, vec_ : vec_}: + `%`(VCONST_fieldval(vectype, vec_)) + -- wf_uN: `%%`($vsize(vectype), vec_) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_2{heaptype : heaptype}: + `%`(REF.NULL_fieldval(heaptype)) + -- wf_heaptype: `%`(heaptype) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_3{u31 : u31}: + `%`(REF.I31_NUM_fieldval(u31)) + -- wf_uN: `%%`(31, u31) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_4{structaddr : structaddr}: + `%`(REF.STRUCT_ADDR_fieldval(structaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_5{arrayaddr : arrayaddr}: + `%`(REF.ARRAY_ADDR_fieldval(arrayaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_6{funcaddr : funcaddr}: + `%`(REF.FUNC_ADDR_fieldval(funcaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_7{exnaddr : exnaddr}: + `%`(REF.EXN_ADDR_fieldval(exnaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_8{hostaddr : hostaddr}: + `%`(REF.HOST_ADDR_fieldval(hostaddr)) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_9{addrref : addrref}: + `%`(REF.EXTERN_fieldval(addrref)) + -- wf_addrref: `%`(addrref) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fieldval_case_10{packtype : packtype, iN : iN}: + `%`(PACK_fieldval(packtype, iN)) + -- wf_uN: `%%`($psize(packtype), iN) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_structinst: `%`(structinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule structinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax arrayinst = +{ + TYPE{deftype : deftype} deftype, + FIELDS{`fieldval*` : fieldval*} fieldval* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_arrayinst: `%`(arrayinst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule arrayinst_case_{var_0 : deftype, var_1 : fieldval*}: + `%`({TYPE var_0, FIELDS var_1}) + -- (wf_fieldval: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exninst = +{ + TAG{tagaddr : tagaddr} tagaddr, + FIELDS{`val*` : val*} val* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_exninst: `%`(exninst) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule exninst_case_{var_0 : tagaddr, var_1 : val*}: + `%`({TAG var_0, FIELDS var_1}) + -- (wf_val: `%`(var_1))*{var_1 <- var_1} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax store = +{ + TAGS{`taginst*` : taginst*} taginst*, + GLOBALS{`globalinst*` : globalinst*} globalinst*, + MEMS{`meminst*` : meminst*} meminst*, + TABLES{`tableinst*` : tableinst*} tableinst*, + FUNCS{`funcinst*` : funcinst*} funcinst*, + DATAS{`datainst*` : datainst*} datainst*, + ELEMS{`eleminst*` : eleminst*} eleminst*, + STRUCTS{`structinst*` : structinst*} structinst*, + ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, + EXNS{`exninst*` : exninst*} exninst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_store: `%`(store) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule store_case_{var_0 : taginst*, var_1 : globalinst*, var_2 : meminst*, var_3 : tableinst*, var_4 : funcinst*, var_5 : datainst*, var_6 : eleminst*, var_7 : structinst*, var_8 : arrayinst*, var_9 : exninst*}: + `%`({TAGS var_0, GLOBALS var_1, MEMS var_2, TABLES var_3, FUNCS var_4, DATAS var_5, ELEMS var_6, STRUCTS var_7, ARRAYS var_8, EXNS var_9}) + -- (wf_taginst: `%`(var_0))*{var_0 <- var_0} + -- (wf_globalinst: `%`(var_1))*{var_1 <- var_1} + -- (wf_meminst: `%`(var_2))*{var_2 <- var_2} + -- (wf_tableinst: `%`(var_3))*{var_3 <- var_3} + -- (wf_funcinst: `%`(var_4))*{var_4 <- var_4} + -- (wf_datainst: `%`(var_5))*{var_5 <- var_5} + -- (wf_eleminst: `%`(var_6))*{var_6 <- var_6} + -- (wf_structinst: `%`(var_7))*{var_7 <- var_7} + -- (wf_arrayinst: `%`(var_8))*{var_8 <- var_8} + -- (wf_exninst: `%`(var_9))*{var_9 <- var_9} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax state = + | `%;%`{store : store, frame : frame}(store : store, frame : frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_state: `%`(state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule state_case_0{store : store, frame : frame}: + `%`(`%;%`_state(store, frame)) + -- wf_store: `%`(store) + -- wf_frame: `%`(frame) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax config = + | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation wf_config: `%`(config) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule config_case_0{state : state, `instr*` : instr*}: + `%`(`%;%`_config(state, instr*{instr <- `instr*`})) + -- wf_state: `%`(state) + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $Ki : nat + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_packfield_: `%%%`(storagetype, val, fieldval?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_0{val : val}: + `%%%`(BOT_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_2{val : val}: + `%%%`(V128_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_3{val : val}: + `%%%`(F64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_4{val : val}: + `%%%`(F32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_5{val : val}: + `%%%`(I64_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_6{val : val}: + `%%%`(I32_storagetype, val, ?($fieldval_val(val))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)))) + -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_9{x0 : storagetype, x1 : val}: + `%%%`(x0, x1, ?()) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_0{addrref : addrref}: + `%%%%`(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_1{addrref : addrref, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_2{addrref : addrref}: + `%%%%`(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_3{addrref : addrref}: + `%%%%`(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_4{addrref : addrref}: + `%%%%`(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_5{addrref : addrref}: + `%%%%`(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_6{addrref : addrref}: + `%%%%`(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_42{u31 : u31}: + `%%%%`(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_43{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_44{u31 : u31}: + `%%%%`(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_45{u31 : u31}: + `%%%%`(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_46{u31 : u31}: + `%%%%`(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_47{u31 : u31}: + `%%%%`(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_48{u31 : u31}: + `%%%%`(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_49{heaptype_0 : heaptype}: + `%%%%`(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_50{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_51{heaptype_0 : heaptype}: + `%%%%`(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_52{heaptype_0 : heaptype}: + `%%%%`(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_53{heaptype_0 : heaptype}: + `%%%%`(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_54{heaptype_0 : heaptype}: + `%%%%`(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_55{heaptype_0 : heaptype}: + `%%%%`(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_56{vectype : vectype, vec_ : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_57{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_58{vectype : vectype, vec_ : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_59{vectype : vectype, vec_ : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_60{vectype : vectype, vec_ : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_61{vectype : vectype, vec_ : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_62{vectype : vectype, vec_ : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_63{numtype : numtype, num_ : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_64{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_65{numtype : numtype, num_ : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_66{numtype : numtype, num_ : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_67{numtype : numtype, num_ : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_68{numtype : numtype, num_ : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_69{numtype : numtype, num_ : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))))) + -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_72{x0 : storagetype, x1 : sx?, x2 : fieldval}: + `%%%%`(x0, x1, x2, ?()) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $store(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $frame(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tagaddr(state : state) : tagaddr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $moduleinst(state : state) : moduleinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $taginst(state : state) : taginst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $globalinst(state : state) : globalinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $meminst(state : state) : meminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tableinst(state : state) : tableinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $funcinst(state : state) : funcinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $datainst(state : state) : datainst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $eleminst(state : state) : eleminst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $structinst(state : state) : structinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $arrayinst(state : state) : arrayinst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $exninst(state : state) : exninst* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $type(state : state, typeidx : typeidx) : deftype + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $tag(state : state, tagidx : tagidx) : taginst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $global(state : state, globalidx : globalidx) : globalinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $mem(state : state, memidx : memidx) : meminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $table(state : state, tableidx : tableidx) : tableinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $func(state : state, funcidx : funcidx) : funcinst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $data(state : state, dataidx : dataidx) : datainst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $elem(state : state, tableidx : tableidx) : eleminst + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $local(state : state, localidx : localidx) : val? + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.LOCALS_frame[$proj_uN_0(x).0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_local: `%%%%`(state, localidx, val, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_local_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_global: `%%%%`(state, globalidx, val, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_global_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.GLOBALS_moduleinst|) + -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_table_case_0{s : store, f : frame, x : uN, i : nat, r : ref}: + `%%%%%`(`%;%`_state(s, f), x, i, r, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_tableinst_case_0{s : store, f : frame, x : uN, ti : tableinst}: + `%%%%`(`%;%`_state(s, f), x, ti, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) + -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_mem_case_0{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}: + `%%%%%%`(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_meminst_case_0{s : store, f : frame, x : uN, mi : meminst}: + `%%%%`(`%;%`_state(s, f), x, mi, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) + -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_elem_case_0{s : store, f : frame, x : uN, `r*` : ref*}: + `%%%%`(`%;%`_state(s, f), x, r*{r <- `r*`}, `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.ELEMS_moduleinst|) + -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_data_case_0{s : store, f : frame, x : uN, `b*` : byte*}: + `%%%%`(`%;%`_state(s, f), x, b*{b <- `b*`}, `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.DATAS_moduleinst|) + -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_struct_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(`%;%`_state(s, f), a, i, fv, `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_with_array_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(`%;%`_state(s, f), a, i, fv, `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_structinst: `%%%`(state, structinst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_structinst_case_0{s : store, f : frame, `si*` : structinst*}: + `%%%`(`%;%`_state(s, f), si*{si <- `si*`}, `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) + -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_arrayinst_case_0{s : store, f : frame, `ai*` : arrayinst*}: + `%%%`(`%;%`_state(s, f), ai*{ai <- `ai*`}, `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) + -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_add_exninst: `%%%`(state, exninst*, state) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_add_exninst_case_0{s : store, f : frame, `exn*` : exninst*}: + `%%%`(`%;%`_state(s, f), exn*{exn <- `exn*`}, `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) + -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) + -- wf_tableinst: `%`(tableinst') + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} + -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) + -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +relation fun_growmem: `%%%`(meminst, nat, meminst?) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%%`(meminst, n, ?(meminst')) + -- wf_meminst: `%`(meminst') + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Num_ok: `%|-%:%`(store, num, numtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, nt : numtype, c : num_}: + `%|-%:%`(s, CONST_num(nt, c), nt) + -- wf_store: `%`(s) + -- wf_num: `%`(CONST_num(nt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Vec_ok: `%|-%:%`(store, vec, vectype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, vt : vectype, c : vec_}: + `%|-%:%`(s, VCONST_vec(vt, c), vt) + -- wf_store: `%`(s) + -- wf_vec: `%`(VCONST_vec(vt, c)) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 +relation Ref_ok: `%|-%:%`(store, ref, reftype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 + rule null{s : store, ht : heaptype, ht' : heaptype}: + `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- wf_reftype: `%`(REF_reftype(?(NULL_null), ht')) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 + rule i31{s : store, i : u31}: + `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.I31_NUM_ref(i)) + -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 + rule struct{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.STRUCT_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (a < |s.STRUCTS_store|) + -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 + rule array{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.ARRAY_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (a < |s.ARRAYS_store|) + -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 + rule func{s : store, a : addr, dt : deftype}: + `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.FUNC_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), $heaptype_deftype(dt))) + -- if (a < |s.FUNCS_store|) + -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 + rule exn{s : store, a : addr, exn : exninst}: + `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + -- wf_store: `%`(s) + -- wf_exninst: `%`(exn) + -- wf_ref: `%`(REF.EXN_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), EXN_heaptype)) + -- if (a < |s.EXNS_store|) + -- if (s.EXNS_store[a] = exn) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 + rule host{s : store, a : addr}: + `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 + rule extern{s : store, addrref : addrref}: + `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) + -- wf_store: `%`(s) + -- wf_ref: `%`(REF.EXTERN_ref(addrref)) + -- wf_reftype: `%`(REF_reftype(?(), EXTERN_heaptype)) + -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) + -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: + `%|-%:%`(s, ref, rt) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- wf_reftype: `%`(rt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) +} + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Val_ok: `%|-%:%`(store, val, valtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule num{s : store, num : num, nt : numtype}: + `%|-%:%`(s, $val_num(num), $valtype_numtype(nt)) + -- wf_store: `%`(s) + -- wf_num: `%`(num) + -- Num_ok: `%|-%:%`(s, num, nt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule vec{s : store, vec : vec, vt : vectype}: + `%|-%:%`(s, $val_vec(vec), $valtype_vectype(vt)) + -- wf_store: `%`(s) + -- wf_vec: `%`(vec) + -- Vec_ok: `%|-%:%`(s, vec, vt) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule ref{s : store, ref : ref, rt : reftype}: + `%|-%:%`(s, $val_ref(ref), $valtype_reftype(rt)) + -- wf_store: `%`(s) + -- wf_ref: `%`(ref) + -- wf_reftype: `%`(rt) + -- Ref_ok: `%|-%:%`(s, ref, rt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 +relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 + rule tag{s : store, a : addr, taginst : taginst}: + `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TAG_externtype(taginst.TYPE_taginst)) + -- if (a < |s.TAGS_store|) + -- if (s.TAGS_store[a] = taginst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 + rule global{s : store, a : addr, globalinst : globalinst}: + `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(GLOBAL_externtype(globalinst.TYPE_globalinst)) + -- if (a < |s.GLOBALS_store|) + -- if (s.GLOBALS_store[a] = globalinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 + rule mem{s : store, a : addr, meminst : meminst}: + `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(MEM_externtype(meminst.TYPE_meminst)) + -- if (a < |s.MEMS_store|) + -- if (s.MEMS_store[a] = meminst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 + rule table{s : store, a : addr, tableinst : tableinst}: + `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) + -- wf_store: `%`(s) + -- wf_externtype: `%`(TABLE_externtype(tableinst.TYPE_tableinst)) + -- if (a < |s.TABLES_store|) + -- if (s.TABLES_store[a] = tableinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 + rule func{s : store, a : addr, funcinst : funcinst}: + `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- wf_store: `%`(s) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) + -- if (a < |s.FUNCS_store|) + -- if (s.FUNCS_store[a] = funcinst) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: + `%|-%:%`(s, externaddr, xt) + -- wf_store: `%`(s) + -- wf_externtype: `%`(xt) + -- wf_externtype: `%`(xt') + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') + -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) +} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, `dt*` : deftype*, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_pure_before_ref.eq-true`: `%`(instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null_0`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_pure: `%~>%`(instr*, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule unreachable: + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) + -- wf_instr: `%`(UNREACHABLE_instr) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule nop: + `%~>%`([NOP_instr], []) + -- wf_instr: `%`(NOP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule drop{val : val}: + `%~>%`([$instr_val(val) DROP_instr], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(DROP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-true`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_1)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `select-false`{val_1 : val, val_2 : val, c : num_, `t*?` : valtype*?}: + `%~>%`([$instr_val(val_1) $instr_val(val_2) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [$instr_val(val_2)]) + -- wf_val: `%`(val_1) + -- wf_val: `%`(val_2) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-true`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `if-false`{c : num_, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: + `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(`IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) + -- wf_instr: `%`(BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- if ($proj_uN_0(l).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(`%`_labelidx(((($proj_uN_0(l).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + -- if ($proj_uN_0(l).0 > 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-true`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 =/= 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_if-false`{c : num_, l : labelidx}: + `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_instr: `%`(BR_IF_instr(l)) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-lt`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |l*{l <- `l*`}|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l*{l <- `l*`}[$proj_uN_0(!($proj_num__0(i))).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_table-ge`{i : num_, `l*` : labelidx*, l' : labelidx}: + `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(BR_TABLE_instr(l*{l <- `l*`}, l')) + -- wf_instr: `%`(BR_instr(l')) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |l*{l <- `l*`}|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [BR_instr(l)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NULL_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], []) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_val: `%`(REF.NULL_val(ht)) + -- if (val = REF.NULL_val(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: + `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) + -- wf_val: `%`(val) + -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call_indirect{x : idx, yy : typeuse}: + `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) CALL_REF_instr(yy)]) + -- wf_instr: `%`(CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call_indirect{x : idx, yy : typeuse}: + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy))) RETURN_CALL_REF_instr(yy)]) + -- wf_instr: `%`(RETURN_CALL_INDIRECT_instr(x, yy)) + -- wf_instr: `%`(TABLE.GET_instr(x)) + -- wf_instr: `%`(REF.CAST_instr(REF_reftype(?(NULL_null), $heaptype_typeuse(yy)))) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `frame-vals`{n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val)^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)^n{val <- `val*`}) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], $instr_val(val)*{val <- `val*`} ++ [RETURN_instr]) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(RETURN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})], $instr_val(val)*{val <- `val*`}) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: + `%~>%`($instr_val(val)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- (wf_instr: `%`(instr))*{instr <- `instr*`} + -- wf_instr: `%`(TRAP_instr) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-label`{n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-frame`{n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(n, f, [TRAP_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.tee{val : val, x : idx}: + `%~>%`([$instr_val(val) LOCAL.TEE_instr(x)], [$instr_val(val) $instr_val(val) LOCAL.SET_instr(x)]) + -- wf_val: `%`(val) + -- wf_instr: `%`(LOCAL.TEE_instr(x)) + -- wf_instr: `%`(LOCAL.SET_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.i31{i : num_}: + `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))]) + -- if ($proj_num__0(i) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(REF.I31_instr) + -- wf_instr: `%`(REF.I31_NUM_instr($wrap__(32, 31, !($proj_num__0(i))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-true`{ref : ref, ht : heaptype}: + `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.is_null-false`{ref : ref, ht : heaptype}: + `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.IS_NULL_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [TRAP_instr]) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + -- wf_instr: `%`(TRAP_instr) + -- wf_ref: `%`(REF.NULL_ref(ht)) + -- if (ref = REF.NULL_ref(ht)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: + `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) + -- if (ref =/= REF.NULL_ref(ht)) + -- wf_ref: `%`(ref) + -- wf_instr: `%`(REF.AS_NON_NULL_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_ref: `%`(REF.NULL_ref(ht_1)) + -- wf_ref: `%`(REF.NULL_ref(ht_2)) + -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- if (ref_1 = ref_2) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) + -- wf_ref: `%`(ref_1) + -- wf_ref: `%`(ref_2) + -- wf_instr: `%`(REF.EQ_instr) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-null`{ht : heaptype, sx : sx}: + `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `i31.get-num`{i : u31, sx : sx}: + `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))]) + -- wf_instr: `%`(REF.I31_NUM_instr(i)) + -- wf_instr: `%`(I31.GET_instr(sx)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, $extend__(31, 32, sx, i)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new{val : val, n : n, x : idx}: + `%~>%`([$instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_instr(x)], $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- wf_val: `%`(val) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(ARRAY.NEW_instr(x)) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.NULL_instr(EXTERN_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `extern.convert_any-addr`{addrref : addrref}: + `%~>%`([$instr_addrref(addrref) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + -- wf_instr: `%`(EXTERN.CONVERT_ANY_instr) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-null`{ht : heaptype}: + `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + -- wf_instr: `%`(REF.NULL_instr(ht)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + -- wf_instr: `%`(REF.NULL_instr(ANY_heaptype)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `any.convert_extern-addr`{addrref : addrref}: + `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [$instr_addrref(addrref)]) + -- wf_instr: `%`(REF.EXTERN_instr(addrref)) + -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(UNOP_instr(nt, unop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(BINOP_instr(nt, binop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: + `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(TESTOP_instr(nt, testop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if ($proj_num__0(c) =/= ?()) + -- if (!($proj_num__0(c)) = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) + -- wf_instr: `%`(CONST_instr(nt, c_1)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_instr: `%`(RELOP_instr(nt, relop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if ($proj_num__0(c) =/= ?()) + -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(CONST_instr(nt_2, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: + `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) + -- wf_instr: `%`(CONST_instr(nt_1, c_1)) + -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVUNOP_instr(V128_vectype, vvunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) + -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvbinop{c_1 : vec_, c_2 : vec_, vvbinop : vvbinop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VVBINOP_instr(V128_vectype, vvbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) + -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, vvternop : vvternop, c : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VVTERNOP_instr(V128_vectype, vvternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) + -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vvtestop{c_1 : vec_, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- fun_inez_: `%%%`($vsize(V128_vectype), c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if ($proj_num__0(c) =/= ?()) + -- if (!($proj_num__0(c)) = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VUNOP_instr(sh, vunop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (|var_0| > 0) + -- if (c <- var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) + -- wf_instr: `%`(TRAP_instr) + -- if (var_0 = []) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_1*` : uN*, var_0 : nat}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (|`var_1*`| = |`i*`|) + -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_1))*{var_1 <- `var_1*`, i <- `i*`} + -- fun_prod: `%%`($proj_uN_0(var_1).0*{var_1 <- `var_1*`}, var_0) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) + -- if ($proj_num__0(c) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if ($proj_num__0(i) =/= ?()) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VBITMASK_instr(sh)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + -- if ($proj_num__0(c) =/= ?()) + -- if (!($proj_num__0(c)) = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_, var_0 : lane_}: + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(Lnn, c_1, var_0) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) + -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), var_0^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), ?(), i)) + -- wf_instr: `%`(CONST_instr(nt, c_2)) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))), mk_lane__0_lane_(nt, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M))) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)|) + -- if (mk_lane__0_lane_(nt, c_2) = $lanes_(`%X%`_shape($lanetype_numtype(nt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vextract_lane-pack`{c_1 : vec_, pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTRACT_LANE_instr(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), ?(sx), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, c_2)) + -- wf_shape: `%`(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M))) + -- if ($proj_num__0(c_2) =/= ?()) + -- if ($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0]) =/= ?()) + -- if ($proj_uN_0(i).0 < |$lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)|) + -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_, var_0 : lane_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(Lnn, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) + -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = var_0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) + -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (var_0 = c) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) + -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) + -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if (c = var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t?{t <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_throw_ref-handler-next`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_0`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_0`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_table.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_memory.init-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.test-false`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_ref.cast-fail`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.fill-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-le`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.copy-gt`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le_0`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- if ($proj_num__0(i_1) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1_2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_elem-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-zero`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation `Step_read_before_array.init_data-num`: `%`(config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Step_read: `%~>%`(config, instr*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) + -- wf_reftype: `%`(rt) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- wf_instr: `%`(BR_instr(l)) + -- ~ `Step_read_before_br_on_cast_fail-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val?*}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if (|`var_0*`| = |`t*`|) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) + -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ var_0*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) + -- if (a < |$funcinst(z)|) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ var_0*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule return_call{z : state, x : idx, a : addr}: + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))]) + -- if (a < |$funcinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [RETURN_CALL_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(RETURN_CALL_REF_instr($typeuse_deftype($funcinst(z)[a].TYPE_funcinst))) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- if ($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0] = a) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, $instr_val(val)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(RETURN_CALL_REF_instr(yy)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, $instr_val(val')*{val' <- `val'*`} ++ $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr(a)) + -- wf_instr: `%`(CALL_REF_instr(yy)) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- if (a < |$funcinst(z)|) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`})) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(THROW_REF_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), $instr_val(val)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + -- if (a < |$exninst(z)|) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[$proj_uN_0(x).0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(REF.EXN_ADDR_instr(a)) + -- wf_instr: `%`(BR_instr(l)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + -- wf_config: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: + `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- fun_blocktype_: `%%%`(z, bt, var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) + -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule local.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [LOCAL.GET_instr(x)])) + -- if ($local(z, x) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule global.get{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [$instr_val(val)]) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [GLOBAL.GET_instr(x)])) + -- if ($global(z, x).VALUE_globalinst = val) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-oob`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.get-val`{z : state, at : addrtype, i : num_, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)]), [$instr_ref($table(z, x).REFS_tableinst[$proj_uN_0(!($proj_num__0(i))).0])]) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + -- if ($proj_num__0(i) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) TABLE.GET_instr(x)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [TABLE.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, rt)) + -- if (|$table(z, x).REFS_tableinst| = n) + -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.GET_instr(y)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.COPY_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `table.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) $instr_ref($elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.INIT_instr(x, y)]) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(TABLE.SET_instr(x)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(TABLE.INIT_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-num-val`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg, c : num_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr(nt, ?(), x, ao)])) + -- wf_instr: `%`(CONST_instr(nt, c)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `load-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)]), [CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) LOAD_instr($numtype_addrtype(Inn), ?(mk_loadop__0_loadop_(Inn, `%_%`_loadop_Inn(`%`_sz(n), sx))), x, ao)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(Inn), mk_num__0_num_(Inn, $extend__(n, $size($numtype_addrtype(Inn)), sx, c)))) + -- if ($proj_num__0(i) =/= ?()) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-oob`{z : state, at : addrtype, i : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-val`{z : state, at : addrtype, i : num_, x : idx, ao : memarg, c : vec_}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-oob`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-pack-val`{z : state, at : addrtype, i : num_, M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_, `j*` : iN*, `k*` : nat*, Jnn : Jnn}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))) + -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(K))), mk_lane__2_lane_(Jnn, $extend__(M, $jsizenn(Jnn), sx, j))))^K{j <- `j*`} + -- (if ($proj_num__0(i) =/= ?()))^(k rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-splat-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))) + -- if ($proj_num__0(i) =/= ?()) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(j).0))^M{})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-oob`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload-zero-val`{z : state, at : addrtype, i : num_, N : N, x : idx, ao : memarg, c : vec_, j : iN}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- wf_uN: `%%`(N, j) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- if ($proj_num__0(i) =/= ?()) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (c = $extend__(N, 128, U_sx, j)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-oob`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `vload_lane-val`{z : state, at : addrtype, i : num_, c_1 : vec_, N : N, x : idx, ao : memarg, j : laneidx, c : vec_, k : iN, Jnn : Jnn, M : M}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) + -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) + -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))) + -- if ($proj_num__0(i) =/= ?()) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)[[$proj_uN_0(j).0] = mk_lane__2_lane_(Jnn, `%`_uN($proj_uN_0(k).0))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))]) + -- wf_config: `%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n)))) + -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) + -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) + -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-oob`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) + -- if ($proj_num__0(j) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) + -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null-idx`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr($heaptype_deftype($type(z, x)))]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))])) + -- wf_instr: `%`(REF.NULL_instr($heaptype_deftype($type(z, x)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule ref.func{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])]) + -- if ($proj_uN_0(x).0 < |$moduleinst(z).FUNCS_moduleinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.FUNC_instr(x)])) + -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [$instr_ref(ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) + -- wf_reftype: `%`(rt') + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) + -- Ref_ok: `%|-%:%`(s, ref, rt') + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- wf_instr: `%`(TRAP_instr) + -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val?*}: + `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- if (|`var_1*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- if (|`var_1*`| = |`var_0*`|) + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} + -- (wf_val: `%`(val))*{val <- `val*`} + -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(STRUCT.NEW_instr(x)) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (|`var_0*`| = |`val*`|) + -- (if (var_0 = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val?}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) + -- if (a < |$structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype, var_1 : valtype, var_0 : val?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) + -- wf_val: `%`(val) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (var_0 = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_, n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)]), $instr_ref(ref)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (wf_ref: `%`(ref))*{ref <- `ref*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_ELEM_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- if ($proj_num__0(i) =/= ?()) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(i))).0 : n]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_num__0(i) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (if ($cunpack(zt) =/= ?()))^n{var_1 <- `var_1*`} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} + -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} + -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) + -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zsize(zt) =/= ?()) + -- if ($proj_num__0(i) =/= ?()) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$arrayinst(z)|) + -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))]) + -- if (a < |$arrayinst(z)|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr])) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(|$arrayinst(z)[a].FIELDS_arrayinst|)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, ht : heaptype, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) + -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.FILL_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) $instr_ref(ref) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_, ht_2 : heaptype, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2)) + -- wf_instr: `%`(ARRAY.SET_instr(x_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i_2)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ($sx(zt_2) =/= ?()) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) + -- wf_ref: `%`(ref) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) + -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) + -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(TRAP_instr) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), []) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- ~ `Step_read_before_array.init_data-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) var_0 ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) + -- wf_lit_: `%%`(zt, c) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) + -- wf_instr: `%`(CONST_instr(I32_numtype, i)) + -- wf_instr: `%`(ARRAY.SET_instr(x)) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) + -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 + rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- fun_add_exninst: `%%%`(z, [exn], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) + -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if (a = |$exninst(z)|) + -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 + rule local.set{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, val, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 + rule global.set{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, val, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(var_0, [])) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (var_1 =/= ?()) + -- if (ti = !(var_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 + rule elem.drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) + -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_num__0(c) =/= ?()) + -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 + rule `vstore_lane-oob`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) + -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) + -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) + -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) + -- if (N = $jsize(Jnn)) + -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($mem(z, x), n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (var_1 =/= ?()) + -- if (mi = !(var_1)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 + rule data.drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) + -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 + rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config(var_0, [REF.STRUCT_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`, zt <- `zt*`} + -- fun_add_structinst: `%%%`(z, [si], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.STRUCT_ADDR_instr(a)])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- (if (var_1 =/= ?()))^n{var_1 <- `var_1*`} + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 + rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(var_0, [])) + -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) + -- if (var_1 =/= ?()) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, !(var_1), var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 + rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config(var_0, [REF.ARRAY_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) + -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.ARRAY_ADDR_instr(a)])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if (var_1 =/= ?()))^n{var_1 <- `var_1*`} + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 + rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 + rule `array.set-oob`{z : state, a : addr, i : num_, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_packfield_: `%%%`(zt, val, var_1) + -- if ($proj_num__0(i) =/= ?()) + -- if (var_1 =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, !(var_1), var_0) + -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) + -- wf_config: `%`(`%;%`_config(var_0, [])) + -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- wf_config: `%`(`%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- wf_config: `%`(`%;%`_config(z, instr*{instr <- `instr*`})) + -- wf_config: `%`(`%;%`_config(z', $instr_val(val)*{val <- `val*`})) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', $instr_val(val)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'*{type' <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype')*{deftype' <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'*{type' <- `type'*`}, var_0) + -- wf_uN: `%%`(32, x) + -- where deftype'*{deftype' <- `deftype'*`} = var_0 {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} + -- if (deftype*{deftype <- `deftype*`} = var_1) + -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) + -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_taginst: `%`({TYPE tagtype}) + -- if (taginst = {TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- fun_alloctags: `%%%`(s_1, tagtype'*{tagtype' <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ja) = var_0 {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = var_1 {ja', `ja'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) + -- if (globalinst = {TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- fun_allocglobals: `%%%%`(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ga) = var_0 {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = var_1 {ga', `ga'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- fun_allocmems: `%%%`(s_1, memtype'*{memtype' <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ma) = var_0 {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = var_1 {ma', `ma'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- fun_alloctables: `%%%%`(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ta) = var_0 {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = var_1 {s_2, ta', `ta'*`} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- fun_allocfuncs: `%%%%%`(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, fa) = var_0 {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = var_1 {fa', `fa'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte*{byte <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) + -- if (datainst = {BYTES byte*{byte <- `byte*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- fun_allocdatas: `%%%%`(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b*{b <- `b*`}, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, da) = var_0 {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = var_1 {da', `da'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref*{ref <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) + -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) + -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) + -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- fun_allocelems: `%%%%`(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref*{ref <- `ref*`}, var_0) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_1) + -- where (s_1, ea) = var_0 {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = var_1 {ea', `ea'*`, s_2} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TAGS_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.GLOBALS_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.MEMS_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TABLES_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.FUNCS_moduleinst|) + -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: + `%%%`(moduleinst, export*{export <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- if (|`var_0*`| = |`export*`|) + -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: + `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, (s_7, moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`}, var_18) + -- (if ($proj_uN_0(x).0 < |dt*{dt <- `dt*`}|))*{x <- `x*`} + -- fun_allocfuncs: `%%%%%`(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}, var_17) + -- if (|`var_16*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}, var_14) + -- if (|`var_13*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T*{ref_T <- `ref_T*`}, var_12) + -- if (|`var_11*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G*{val_G <- `val_G*`}, var_8) + -- if (|`var_7*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_0) + -- wf_store: `%`(s_7) + -- wf_moduleinst: `%`(moduleinst) + -- wf_store: `%`(s_1) + -- wf_store: `%`(s_2) + -- wf_store: `%`(s_3) + -- wf_store: `%`(s_4) + -- wf_store: `%`(s_5) + -- wf_store: `%`(s_6) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- if (|`expr_F*`| = |`local**`|) + -- if (|`expr_F*`| = |`x*`|) + -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- if (|`elemmode*`| = |`elemtype*`|) + -- if (|`elemmode*`| = |`expr_E**`|) + -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} + -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = var_0 {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = var_1 {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = var_2 {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = var_3 {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = var_4 {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = var_5 {dt, `dt*`} + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) + -- where (s_1, aa*{aa <- `aa*`}) = var_6 {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = var_8 {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = var_10 {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = var_12 {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = var_14 {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = var_15 {ea, `ea*`, s_6} + -- if ((s_7, fa*{fa <- `fa*`}) = var_17) + -- if (xi*{xi <- `xi*`} = var_18) + -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_rundata_: `%%%`(dataidx, data, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_0{x : uN, `b*` : byte*, n : nat}: + `%%%`(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode), []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_rundata__case_1{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) + -- wf_instr: `%`(DATA.DROP_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_runelem_: `%%%`(elemidx, elem, instr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_0{x : uN, rt : reftype, `e*` : expr*, n : nat}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode), []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_1{x : uN, rt : reftype, `e*` : expr*, n : nat}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode), [ELEM.DROP_instr(x)]) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_runelem__case_2{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)]) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) + -- wf_instr: `%`(TABLE.INIT_instr(y, x)) + -- wf_instr: `%`(ELEM.DROP_instr(x)) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}, (z', [val] ++ val'*{val' <- `val'*`})) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) + -- wf_state: `%`(z') + -- wf_val: `%`(val) + -- (wf_val: `%`(val'))*{val' <- `val'*`} + -- wf_state: `%`(`%;%`_state(s, f)) + -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) + -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = var_0 {a, s'} + -- where (z', val'*{val' <- `val'*`}) = var_1 {val', `val'*`, z'} +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*, `var_6*` : instr**, `var_5*` : instr**, var_4 : (store, moduleinst), var_3 : (state, val*), var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: + `%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (if (i_E < |elem*{elem <- `elem*`}|))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E], var_6))^(i_E<|elem*{elem <- `elem*`}|){var_6 <- `var_6*`, i_E <- `i_E*`} + -- (if (i_D < |data*{data <- `data*`}|))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D), data*{data <- `data*`}[i_D], var_5))^(i_D<|data*{data <- `data*`}|){var_5 <- `var_5*`, i_D <- `i_D*`} + -- fun_allocmodule: `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_4) + -- fun_evalglobals: `%%%%`(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}, var_3) + -- fun_funcsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_0) + -- wf_state: `%`(z) + -- wf_state: `%`(z') + -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} + -- (wf_ref: `%`(ref_T))*{ref_T <- `ref_T*`} + -- (wf_ref: `%`(ref_E))*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`} + -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- if (|`expr_G*`| = |`globaltype*`|) + -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- if (|`expr_T*`| = |`tabletype*`|) + -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- if (|`byte**`| = |`datamode*`|) + -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- if (|`elemmode*`| = |`expr_E**`|) + -- if (|`elemmode*`| = |`reftype*`|) + -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} + -- (wf_start: `%`(START_start(x)))?{x <- `x?`} + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- if (|`externaddr*`| = |`xt_I*`|) + -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- where (z', val_G*{val_G <- `val_G*`}) = var_3 {val_G, `val_G*`, z'} + -- if (|`expr_T*`| = |`ref_T*`|) + -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- if (|`expr_E**`| = |`ref_E**`|) + -- (if (|`expr_E*`| = |`ref_E*`|))*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} + -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} + -- where (s', moduleinst) = var_4 {moduleinst, s'} + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, var_5^(i_D<|data*{data <- `data*`}|){var_5 <- `var_5*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, var_6^(i_E<|elem*{elem <- `elem*`}|){var_6 <- `var_6*`})) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val*{val <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- if (funcaddr < |s.FUNCS_store|) + -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`t_1*`| = |`val*`|) + -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} + diff --git a/spectec/test-middlend/specification.exp/10-alias-demut.il b/spectec/test-middlend/specification.exp/13-alias-demut.il similarity index 55% rename from spectec/test-middlend/specification.exp/10-alias-demut.il rename to spectec/test-middlend/specification.exp/13-alias-demut.il index 3e52e9a7b2..bc04fe6ff6 100644 --- a/spectec/test-middlend/specification.exp/10-alias-demut.il +++ b/spectec/test-middlend/specification.exp/13-alias-demut.il @@ -22,31 +22,40 @@ def $min(nat : nat, nat : nat) : nat ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 -def $sum(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 - def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 - def $sum{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'*{n' <- `n'*`}, (n + var_0)) + -- fun_sum: `%%`(n'*{n' <- `n'*`}, var_0) } ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 -def $prod(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 - def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 - def $prod{n : nat, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{n : nat, `n'*` : n*, var_0 : nat}: + `%%`([n] ++ n'*{n' <- `n'*`}, (n * var_0)) + -- fun_prod: `%%`(n'*{n' <- `n'*`}, var_0) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $opt_(syntax X, X*) : X? +def $opt_(syntax X, X*) : X?? ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() + def $opt_{syntax X}(syntax X, []) = ?(?()) ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec rec { @@ -199,11 +208,6 @@ relation wf_uN: `%%`(N, uN) syntax sN = | `%`{i : int}(i : int) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_sN_0(x : sN) : (int) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_sN_0{v_num_0 : int}(`%`_sN(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_sN: `%%`(N, sN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -242,28 +246,30 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(N : N) : nat +def $signif(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(N : N) : nat +def $expon(N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $M(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : nat}(N) = $signif(N) + def $M{N : nat}(N) = !($signif(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : nat}(N) = $expon(N) + def $E{N : nat}(N) = !($expon(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -320,27 +326,30 @@ syntax f32 = fN syntax f64 = fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fzero(N : N) : fN +relation fun_fzero: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : nat}(N) = POS_fN(SUBNORM_fNmag(0)) + rule fun_fzero_case_0{N : nat}: + `%%`(N, POS_fN(SUBNORM_fNmag(0))) -- wf_fN: `%%`(N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fnat(N : N, nat : nat) : fN +relation fun_fnat: `%%%`(N, nat, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fnat{N : nat, n : nat}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) + rule fun_fnat_case_0{N : nat, n : nat}: + `%%%`(N, n, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fone(N : N) : fN +relation fun_fone: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{N : nat}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + rule fun_fone_case_0{N : nat}: + `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) -- wf_fN: `%%`(N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : nat}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + def $canon_{N : nat}(N) = (2 ^ (((!($signif(N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -362,11 +371,6 @@ def $proj_list_0(syntax X, x : list(syntax X)) : (X*) syntax char = | `%`{i : nat}(i : nat) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_char_0(x : char) : (nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_char_0{v_num_0 : nat}(`%`_char(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_char: `%`(char) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -374,57 +378,13 @@ relation wf_char: `%`(char) `%`(`%`_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(`%`_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (`%`_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = | `%`{`char*` : char*}(char*{char <- `char*`} : char*) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_name_0(x : name) : (char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_name_0{v_char_list_0 : char*}(`%`_name(v_char_list_0)) = (v_char_list_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -510,66 +470,101 @@ relation wf_externidx: `%`(externidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 -def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 - def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 - def $funcsxx{x : uN, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 - def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : typeidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_funcsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 -def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 - def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 - def $globalsxx{x : uN, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 - def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : globalidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_globalsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 -def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 - def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 - def $tablesxx{x : uN, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 - def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tableidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_tablesxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 -def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 - def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 - def $memsxx{x : uN, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 - def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, `xx*` : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : memidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_memsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 -def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 - def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 - def $tagsxx{x : uN, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 - def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx*{xx <- `xx*`}, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{externidx : externidx, `xx*` : externidx*, var_0 : tagidx*}: + `%%`([externidx] ++ xx*{xx <- `xx*`}, var_0) + -- fun_tagsxx: `%%`(xx*{xx <- `xx*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -602,89 +597,121 @@ relation wf_free: `%`(free) -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_opt(free?) : free +relation fun_free_opt: `%%`(free?, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{free : free}(?(free)) = free + rule fun_free_opt_case_1{free : free}: + `%%`(?(free), free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.1-172.29 -def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:177.1-177.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.57 - def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 + rule fun_free_list_case_1{free : free, `free'*` : free*, var_0 : free}: + `%%`([free] ++ free'*{free' <- `free'*`}, free +++ var_0) + -- fun_free_list: `%%`(free'*{free' <- `free'*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_typeidx(typeidx : typeidx) : free +relation fun_free_typeidx: `%%`(typeidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : uN}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_typeidx_case_0{typeidx : uN}: + `%%`(typeidx, {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_funcidx(funcidx : funcidx) : free +relation fun_free_funcidx: `%%`(funcidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : uN}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_funcidx_case_0{funcidx : uN}: + `%%`(funcidx, {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_globalidx(globalidx : globalidx) : free +relation fun_free_globalidx: `%%`(globalidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : uN}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_globalidx_case_0{globalidx : uN}: + `%%`(globalidx, {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tableidx(tableidx : tableidx) : free +relation fun_free_tableidx: `%%`(tableidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : uN}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_tableidx_case_0{tableidx : uN}: + `%%`(tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_memidx(memidx : memidx) : free +relation fun_free_memidx: `%%`(memidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : uN}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_memidx_case_0{memidx : uN}: + `%%`(memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_elemidx(elemidx : elemidx) : free +relation fun_free_elemidx: `%%`(elemidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : uN}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemidx_case_0{elemidx : uN}: + `%%`(elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_dataidx(dataidx : dataidx) : free +relation fun_free_dataidx: `%%`(dataidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : uN}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + rule fun_free_dataidx_case_0{dataidx : uN}: + `%%`(dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_localidx(localidx : localidx) : free +relation fun_free_localidx: `%%`(localidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : uN}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + rule fun_free_localidx_case_0{localidx : uN}: + `%%`(localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_labelidx(labelidx : labelidx) : free +relation fun_free_labelidx: `%%`(labelidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : uN}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + rule fun_free_labelidx_case_0{labelidx : uN}: + `%%`(labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_externidx(externidx : externidx) : free +relation fun_free_externidx: `%%`(externidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{funcidx : uN}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) + rule fun_free_externidx_case_0{funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_1{globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx : uN}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + rule fun_free_externidx_case_2{tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx : uN}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + rule fun_free_externidx_case_3{memidx : uN, var_0 : free}: + `%%`(MEM_externidx(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx : uN}(MEM_externidx(memidx)) = $free_memidx(memidx) + rule fun_free_externidx_case_4{tagidx : uN}: + `%%`(TAG_externidx(tagidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1135,75 +1162,87 @@ syntax Cnn = | V128 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ANYREF : reftype +relation fun_ANYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EQREF : reftype +relation fun_EQREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $I31REF : reftype +relation fun_I31REF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $STRUCTREF : reftype +relation fun_STRUCTREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ARRAYREF : reftype +relation fun_ARRAYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FUNCREF : reftype +relation fun_FUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXNREF : reftype +relation fun_EXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXTERNREF : reftype +relation fun_EXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLREF : reftype +relation fun_NULLREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLFUNCREF : reftype +relation fun_NULLFUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXNREF : reftype +relation fun_NULLEXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXTERNREF : reftype +relation fun_NULLEXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1369,29 +1408,32 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(N : N) : Inn +def $IN(N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = I32_Inn + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(N : N) : Fnn +def $FN(N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = F32_Fnn + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(N : N) : Jnn +def $JN(N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = I8_Jnn + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = I16_Jnn + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = I32_Jnn + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = I64_Jnn + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(numtype : numtype) : nat @@ -1432,21 +1474,22 @@ def $lsize(lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(storagetype : storagetype) : nat +def $zsize(storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I32_storagetype) = $size(I32_numtype) + def $zsize(I32_storagetype) = ?($size(I32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I64_storagetype) = $size(I64_numtype) + def $zsize(I64_storagetype) = ?($size(I64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F32_storagetype) = $size(F32_numtype) + def $zsize(F32_storagetype) = ?($size(F32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F64_storagetype) = $size(F64_numtype) + def $zsize(F64_storagetype) = ?($size(F64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(V128_storagetype) = $vsize(V128_vectype) + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I8_storagetype) = $psize(I8_packtype) + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I16_storagetype) = $psize(I16_packtype) + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat @@ -1478,7 +1521,9 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : nat}(n) = ?($Jnn_addrtype(!($inv_isize(n)))) + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) def $inv_jsize{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1537,7 +1582,13 @@ def $jsizenn(Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : nat}(n) = ?(!($inv_jsize(n))) + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) def $inv_jsizenn{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1556,26 +1607,43 @@ def $lunpack(lanetype : lanetype) : numtype def $lunpack(I16_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $unpack(storagetype : storagetype) : valtype +relation fun_unpack: `%%`(storagetype, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(BOT_storagetype) = BOT_valtype + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{`null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype)) = REF_valtype(null?{null <- `null?`}, heaptype) + rule fun_unpack_case_1{`null?` : null?, heaptype : heaptype}: + `%%`(REF_storagetype(null?{null <- `null?`}, heaptype), REF_valtype(null?{null <- `null?`}, heaptype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(V128_storagetype) = V128_valtype + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(F64_storagetype) = F64_valtype + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(F32_storagetype) = F32_valtype + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I64_storagetype) = I64_valtype + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I32_storagetype) = I32_valtype + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I8_storagetype) = I32_valtype + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I16_storagetype) = I32_valtype + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1636,110 +1704,168 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $diffrt(reftype : reftype, reftype : reftype) : reftype +relation fun_diffrt: `%%%`(reftype, reftype, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + rule fun_diffrt_case_0{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) + rule fun_diffrt_case_1{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) -- wf_reftype: `%`(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(typeuse : typeuse) : deftype +def $as_deftype(typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = _DEF_deftype(rectype, n) + def $as_deftype{rectype : rectype, n : n}(_DEF_typeuse(rectype, n)) = ?(_DEF_deftype(rectype, n)) + def $as_deftype{x0 : typeuse}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 - def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 - def $tagsxt{jt : typeuse, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 - def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_1{jt : typeuse, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tagtype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_tagsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 - def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 - def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 - def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_1{gt : globaltype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : globaltype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_globalsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 - def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 - def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 - def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_1{mt : memtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : memtype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_memsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 - def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 - def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 - def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_1{tt : tabletype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : tabletype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_tablesxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 - def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{rectype : rectype, n : n, `xt*` : externtype*}([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt*{xt <- `xt*`}) = [_DEF_deftype(rectype, n)] ++ $funcsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 - def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_1{rectype : rectype, n : n, `xt*` : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(rectype, n))] ++ xt*{xt <- `xt*`}, [_DEF_deftype(rectype, n)] ++ var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_2{externtype : externtype, `xt*` : externtype*, var_0 : deftype*}: + `%%`([externtype] ++ xt*{xt <- `xt*`}, var_0) + -- fun_funcsxt: `%%`(xt*{xt <- `xt*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 -def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 - def $subst_typevar{tv : typevar}(tv, [], []) = $typeuse_typevar(tv) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 - def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_1{tv : typevar, tu_1 : typeuse, `tu'*` : typeuse*}: + `%%%%`(tv, [], [tu_1] ++ tu'*{tu' <- `tu'*`}, $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_2{tv : typevar, tv_1 : typevar, `tv'*` : typevar*}: + `%%%%`(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [], $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_3{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*, var_0 : typeuse}: + `%%%%`(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}, (if (tv = tv_1) then tu_1 else var_0)) + -- fun_subst_typevar: `%%%%`(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 -def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 - def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 - def $minus_recs{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 - def $minus_recs{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ([], [])) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_1{n : nat, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}, var_0) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_2{x : uN, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}, ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = var_0 {tu', `tu'*`, tv', `tv'*`} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1760,107 +1886,189 @@ def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 -def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_typeuse(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_typeuse(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_typeuse(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 -def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{n : n, `tv*` : typevar*, `tu*` : typeuse*}(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $heaptype_typeuse($subst_typevar(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*}(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $heaptype_typeuse($subst_typevar(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $heaptype_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 -def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 -def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_numtype($subst_numtype(I32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_numtype($subst_numtype(I64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_numtype($subst_numtype(F32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_numtype($subst_numtype(F64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_vectype($subst_vectype(V128_vectype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $valtype_reftype($subst_reftype(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(REC_typeuse(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(_IDX_typeuse(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_0{n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(REC_heaptype(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_typeuse(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_1{typeidx : typeidx, `tv*` : typevar*, `tu*` : typeuse*, var_0 : typeuse}: + `%%%%`(_IDX_heaptype(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_typeuse(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(typeidx), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_2{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_3{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.20 + rule fun_subst_reftype_case_0{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REF_reftype(null?{null <- `null?`}, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_reftype: `%`(REF_reftype(null?{null <- `null?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_0{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(I32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_1{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(I64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_2{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(F32_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_3{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_numtype($subst_numtype(F64_numtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_4{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_vectype($subst_vectype(V128_vectype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_5{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_6{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, BOT_valtype) -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 -def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_storagetype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(V128_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(F32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_valtype($subst_valtype(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I8_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_packtype($subst_packtype(I8_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{`tv*` : typevar*, `tu*` : typeuse*}(I16_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $storagetype_packtype($subst_packtype(I16_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 -def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 -def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) - -- wf_comptype: `%`(STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) - -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 -def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*}(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 -def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_0{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_1{`null?` : null?, heaptype : heaptype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(null?{null <- `null?`}, heaptype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_2{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_3{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_4{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_5{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_6{`tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_7{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I8_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_packtype($subst_packtype(I8_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_8{`tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(I16_storagetype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, $storagetype_packtype($subst_packtype(I16_packtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.22 + rule fun_subst_fieldtype_case_0{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : storagetype}: + `%%%%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_0{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_0*` : fieldtype*}: + `%%%%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- if (|`var_0*`| = |`ft*`|) + -- (fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, ft <- `ft*`} + -- wf_comptype: `%`(STRUCT_comptype(`%`_list(var_0*{var_0 <- `var_0*`}))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_1{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_2{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : valtype*, `var_0*` : valtype*}: + `%%%%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + -- if (|`var_1*`| = |`t_2*`|) + -- (fun_subst_valtype: `%%%%`(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, t_2 <- `t_2*`} + -- if (|`var_0*`| = |`t_1*`|) + -- (fun_subst_valtype: `%%%%`(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, t_1 <- `t_1*`} + -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), `%`_resulttype(var_1*{var_1 <- `var_1*`}))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 + rule fun_subst_subtype_case_0{`final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, var_1 : comptype, `var_0*` : typeuse*}: + `%%%%`(SUB_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`tu'*`|) + -- (fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, tu' <- `tu'*`} + -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, var_0*{var_0 <- `var_0*`}, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.20 + rule fun_subst_rectype_case_0{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*, var_1 : (typevar*, typeuse*), `var_0*` : subtype*}: + `%%%%`(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, REC_rectype(`%`_list(var_0*{var_0 <- `var_0*`}))) + -- fun_minus_recs: `%%%`(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1) + -- if (|`var_0*`| = |`st*`|) + -- (fun_subst_subtype: `%%%%`(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}, var_0))*{var_0 <- `var_0*`, st <- `st*`} -- (wf_typevar: `%`(tv'))*{tv' <- `tv'*`} -- (wf_typeuse: `%`(tu'))*{tu' <- `tu'*`} - -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 -def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) + -- where (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = var_1 {tu', `tu'*`, tv', `tv'*`} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.6-358.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.6-358.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, `tv*` : typevar*, `tu*` : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1869,395 +2077,655 @@ def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + rule fun_subst_tagtype_case_0{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_globaltype_case_0{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : valtype}: + `%%%%`(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%`_globaltype(mut?{mut <- `mut?`}, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_globaltype: `%`(`%%`_globaltype(mut?{mut <- `mut?`}, var_0)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%PAGE`_memtype(at, lim)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : reftype}: + `%%%%`(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%%%`_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_tabletype: `%`(`%%%`_tabletype(at, lim, var_0)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_0{jt : typeuse, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TAG_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_1{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_2{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) + rule fun_subst_externtype_case_3{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(MEM_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`})))) + rule fun_subst_externtype_case_4{rectype : rectype, n : n, `tv*` : typevar*, `tu*` : typeuse*, var_0 : deftype}: + `%%%%`(FUNC_externtype(_DEF_typeuse(rectype, n)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, FUNC_externtype($typeuse_deftype(var_0))) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(rectype, n), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(var_0))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) - -- wf_moduletype: `%`(`%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`})) + rule fun_subst_moduletype_case_0{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `var_1*` : externtype*, `var_0*` : externtype*}: + `%%%%`(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, `%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) + -- if (|`var_1*`| = |`xt_2*`|) + -- (fun_subst_externtype: `%%%%`(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_1))*{var_1 <- `var_1*`, xt_2 <- `xt_2*`} + -- if (|`var_0*`| = |`xt_1*`|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}, var_0))*{var_0 <- `var_0*`, xt_1 <- `xt_1*`} + -- wf_moduletype: `%`(`%->%`_moduletype(var_0*{var_0 <- `var_0*`}, var_1*{var_1 <- `var_1*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_all_valtype(valtype : valtype, typeuse*) : valtype +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : nat, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 -def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 - def $free_subtype{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:495.1-495.34 -def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 -def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 - def $free_deftype{rectype : rectype, n : nat}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:496.6-496.22 +relation fun_free_resulttype: `%%`(resulttype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:496.6-496.22 + rule fun_free_resulttype_case_0{`valtype*` : valtype*, `var_1*` : free*, var_0 : free}: + `%%`(`%`_resulttype(valtype*{valtype <- `valtype*`}), var_0) + -- if (|`var_1*`| = |`valtype*`|) + -- (fun_free_valtype: `%%`(valtype, var_1))*{var_1 <- `var_1*`, valtype <- `valtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 +relation fun_free_storagetype: `%%`(storagetype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_0{var_0 : free}: + `%%`(BOT_storagetype, var_0) + -- fun_free_valtype: `%%`(BOT_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_1{`null?` : null?, heaptype : heaptype, var_0 : free}: + `%%`(REF_storagetype(null?{null <- `null?`}, heaptype), var_0) + -- fun_free_valtype: `%%`(REF_valtype(null?{null <- `null?`}, heaptype), var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_2{var_0 : free}: + `%%`(V128_storagetype, var_0) + -- fun_free_valtype: `%%`(V128_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_3{var_0 : free}: + `%%`(F64_storagetype, var_0) + -- fun_free_valtype: `%%`(F64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_4{var_0 : free}: + `%%`(F32_storagetype, var_0) + -- fun_free_valtype: `%%`(F32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_5{var_0 : free}: + `%%`(I64_storagetype, var_0) + -- fun_free_valtype: `%%`(I64_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_6{var_0 : free}: + `%%`(I32_storagetype, var_0) + -- fun_free_valtype: `%%`(I32_valtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_7{var_0 : free}: + `%%`(I8_storagetype, var_0) + -- fun_free_packtype: `%%`(I8_packtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:497.6-497.23 + rule fun_free_storagetype_case_8{var_0 : free}: + `%%`(I16_storagetype, var_0) + -- fun_free_packtype: `%%`(I16_packtype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:498.6-498.21 +relation fun_free_fieldtype: `%%`(fieldtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:498.6-498.21 + rule fun_free_fieldtype_case_0{`mut?` : mut?, storagetype : storagetype, var_0 : free}: + `%%`(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype), var_0) + -- fun_free_storagetype: `%%`(storagetype, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:499.6-499.20 +relation fun_free_comptype: `%%`(comptype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:499.6-499.20 + rule fun_free_comptype_case_0{`fieldtype*` : fieldtype*, `var_1*` : free*, var_0 : free}: + `%%`(STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})), var_0) + -- if (|`var_1*`| = |`fieldtype*`|) + -- (fun_free_fieldtype: `%%`(fieldtype, var_1))*{var_1 <- `var_1*`, fieldtype <- `fieldtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:499.6-499.20 + rule fun_free_comptype_case_1{fieldtype : fieldtype, var_0 : free}: + `%%`(ARRAY_comptype(fieldtype), var_0) + -- fun_free_fieldtype: `%%`(fieldtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:499.6-499.20 + rule fun_free_comptype_case_2{resulttype_1 : list(syntax valtype), resulttype_2 : list(syntax valtype), var_1 : free, var_0 : free}: + `%%`(`FUNC%->%`_comptype(resulttype_1, resulttype_2), var_0 +++ var_1) + -- fun_free_resulttype: `%%`(resulttype_2, var_1) + -- fun_free_resulttype: `%%`(resulttype_1, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.6-500.19 +relation fun_free_subtype: `%%`(subtype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:500.6-500.19 + rule fun_free_subtype_case_0{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype), var_0 +++ var_2) + -- fun_free_comptype: `%%`(comptype, var_2) + -- if (|`var_1*`| = |`typeuse*`|) + -- (fun_free_typeuse: `%%`(typeuse, var_1))*{var_1 <- `var_1*`, typeuse <- `typeuse*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.6-501.19 +relation fun_free_rectype: `%%`(rectype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:501.6-501.19 + rule fun_free_rectype_case_0{`subtype*` : subtype*, `var_1*` : free*, var_0 : free}: + `%%`(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), var_0) + -- if (|`var_1*`| = |`subtype*`|) + -- (fun_free_subtype: `%%`(subtype, var_1))*{var_1 <- `var_1*`, subtype <- `subtype*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.6-529.19 +relation fun_free_deftype: `%%`(deftype, free) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:529.6-529.19 + rule fun_free_deftype_case_0{rectype : rectype, n : nat, var_0 : free}: + `%%`(_DEF_deftype(rectype, n), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tagtype(tagtype : tagtype) : free +relation fun_free_tagtype: `%%`(tagtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tagtype{rectype : rectype, n : n}(_DEF_tagtype(rectype, n)) = $free_deftype(_DEF_deftype(rectype, n)) + rule fun_free_tagtype_case_0{rectype : rectype, n : n, var_0 : free}: + `%%`(_DEF_tagtype(rectype, n), var_0) + -- fun_free_deftype: `%%`(_DEF_deftype(rectype, n), var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_globaltype(globaltype : globaltype) : free +relation fun_free_globaltype: `%%`(globaltype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) + rule fun_free_globaltype_case_0{`mut?` : mut?, valtype : valtype, var_0 : free}: + `%%`(`%%`_globaltype(mut?{mut <- `mut?`}, valtype), var_0) + -- fun_free_valtype: `%%`(valtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_memtype(memtype : memtype) : free +relation fun_free_memtype: `%%`(memtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype($numtype_addrtype(addrtype)) + rule fun_free_memtype_case_0{addrtype : addrtype, limits : limits, var_0 : free}: + `%%`(`%%PAGE`_memtype(addrtype, limits), var_0) + -- fun_free_addrtype: `%%`(addrtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_tabletype(tabletype : tabletype) : free +relation fun_free_tabletype: `%%`(tabletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype($numtype_addrtype(addrtype)) +++ $free_reftype(reftype) + rule fun_free_tabletype_case_0{addrtype : addrtype, limits : limits, reftype : reftype, var_1 : free, var_0 : free}: + `%%`(`%%%`_tabletype(addrtype, limits, reftype), var_0 +++ var_1) + -- fun_free_reftype: `%%`(reftype, var_1) + -- fun_free_addrtype: `%%`(addrtype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_datatype(datatype : datatype) : free +relation fun_free_datatype: `%%`(datatype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_datatype_case_0: + `%%`(OK_datatype, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_elemtype(elemtype : elemtype) : free +relation fun_free_elemtype: `%%`(elemtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) + rule fun_free_elemtype_case_0{reftype : reftype, var_0 : free}: + `%%`(reftype, var_0) + -- fun_free_reftype: `%%`(reftype, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_externtype(externtype : externtype) : free +relation fun_free_externtype: `%%`(externtype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tagtype : typeuse}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) + rule fun_free_externtype_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_externtype(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + rule fun_free_externtype_case_1{globaltype : globaltype, var_0 : free}: + `%%`(GLOBAL_externtype(globaltype), var_0) + -- fun_free_globaltype: `%%`(globaltype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + rule fun_free_externtype_case_2{memtype : memtype, var_0 : free}: + `%%`(MEM_externtype(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + rule fun_free_externtype_case_3{tabletype : tabletype, var_0 : free}: + `%%`(TABLE_externtype(tabletype), var_0) + -- fun_free_tabletype: `%%`(tabletype, var_0) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + rule fun_free_externtype_case_4{typeuse : typeuse, var_0 : free}: + `%%`(FUNC_externtype(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $free_moduletype(moduletype : moduletype) : free +relation fun_free_moduletype: `%%`(moduletype, free) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) + rule fun_free_moduletype_case_0{`externtype_1*` : externtype*, `externtype_2*` : externtype*, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`}), var_0 +++ var_2) + -- if (|`var_3*`| = |`externtype_2*`|) + -- (fun_free_externtype: `%%`(externtype_2, var_3))*{var_3 <- `var_3*`, externtype_2 <- `externtype_2*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`externtype_1*`|) + -- (fun_free_externtype: `%%`(externtype_1, var_1))*{var_1 <- `var_1*`, externtype_1 <- `externtype_1*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax num_ = @@ -2772,9 +3240,10 @@ relation wf_shape: `%`(shape) -- if (($lsize(lanetype) * $proj_dim_0(dim).0) = 128) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $dim(shape : shape) : dim +relation fun_dim: `%%`(shape, dim) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : lanetype, N : nat}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + rule fun_dim_case_0{Lnn : lanetype, N : nat}: + `%%`(`%X%`_shape(Lnn, `%`_dim(N)), `%`_dim(N)) -- wf_dim: `%`(`%`_dim(N)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -4422,11 +4891,12 @@ relation wf_instr: `%`(instr) -- wf_vswizzlop_: `%%`(bshape, vswizzlop_) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 - rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*}: + rule instr_case_95{bshape : bshape, `laneidx*` : laneidx*, var_0 : dim}: `%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) + -- fun_dim: `%%`($proj_bshape_0(bshape).0, var_0) -- wf_bshape: `%`(bshape) -- (wf_uN: `%%`(8, laneidx))*{laneidx <- `laneidx*`} - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim($proj_bshape_0(bshape).0)) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = var_0) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.8-136.13 rule instr_case_96{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__}: @@ -4538,288 +5008,651 @@ relation wf_instr: `%`(instr) syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $memarg0 : memarg +relation fun_memarg0: `%`(memarg) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u64(0)} + rule fun_memarg0_case_0: + `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) -- wf_memarg: `%`({ALIGN `%`_u32(0), OFFSET `%`_u64(0)}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $const(consttype : consttype, lit_ : lit_) : instr +relation fun_const: `%%%`(consttype, lit_, instr) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(I32_consttype, mk_lit__0_lit_(I32_numtype, c)) = CONST_instr(I32_numtype, c) + rule fun_const_case_0{c : num_}: + `%%%`(I32_consttype, mk_lit__0_lit_(I32_numtype, c), CONST_instr(I32_numtype, c)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(I64_consttype, mk_lit__0_lit_(I64_numtype, c)) = CONST_instr(I64_numtype, c) + rule fun_const_case_1{c : num_}: + `%%%`(I64_consttype, mk_lit__0_lit_(I64_numtype, c), CONST_instr(I64_numtype, c)) -- wf_instr: `%`(CONST_instr(I64_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(F32_consttype, mk_lit__0_lit_(F32_numtype, c)) = CONST_instr(F32_numtype, c) + rule fun_const_case_2{c : num_}: + `%%%`(F32_consttype, mk_lit__0_lit_(F32_numtype, c), CONST_instr(F32_numtype, c)) -- wf_instr: `%`(CONST_instr(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : num_}(F64_consttype, mk_lit__0_lit_(F64_numtype, c)) = CONST_instr(F64_numtype, c) + rule fun_const_case_3{c : num_}: + `%%%`(F64_consttype, mk_lit__0_lit_(F64_numtype, c), CONST_instr(F64_numtype, c)) -- wf_instr: `%`(CONST_instr(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{c : uN}(V128_consttype, mk_lit__1_lit_(V128_vectype, c)) = VCONST_instr(V128_vectype, c) + rule fun_const_case_4{c : uN}: + `%%%`(V128_consttype, mk_lit__1_lit_(V128_vectype, c), VCONST_instr(V128_vectype, c)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_shape(shape : shape) : free +relation fun_free_shape: `%%`(shape, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) + rule fun_free_shape_case_0{lanetype : lanetype, dim : dim, var_0 : free}: + `%%`(`%X%`_shape(lanetype, dim), var_0) + -- fun_free_lanetype: `%%`(lanetype, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_blocktype(blocktype : blocktype) : free +relation fun_free_blocktype: `%%`(blocktype, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + rule fun_free_blocktype_case_0{`valtype?` : valtype?, `var_1?` : free?, var_0 : free}: + `%%`(_RESULT_blocktype(valtype?{valtype <- `valtype?`}), var_0) + -- if ((`var_1?` = ?()) <=> (`valtype?` = ?())) + -- (fun_free_valtype: `%%`(valtype, var_1))?{var_1 <- `var_1?`, valtype <- `valtype?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{typeidx : uN}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + rule fun_free_blocktype_case_1{typeidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 -def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 - def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 - def $shift_labelidxs{labelidx : uN, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_1{`labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_2{labelidx : uN, `labelidx'*` : labelidx*, var_0 : labelidx*}: + `%%`([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}, [`%`_labelidx(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'*{labelidx' <- `labelidx'*`}, var_0) -- wf_uN: `%%`(32, `%`_uN(((($proj_uN_0(labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 -def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 - def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 - def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 - def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 - def $free_instr{labelidx : uN}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 - def $free_instr{labelidx : uN}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 - def $free_instr{`labelidx*` : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 - def $free_instr{labelidx : uN}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 - def $free_instr{labelidx : uN}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 - def $free_instr{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 - def $free_instr{funcidx : uN}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 - def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_3{`valtype*?` : valtype*?, `var_2*?` : free*?, `var_1?` : free?, var_0 : free}: + `%%`(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}), var_0) + -- if ((`var_2*?` = ?()) <=> (`valtype*?` = ?())) + -- (if (|`var_2*`| = |`valtype*`|))?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- (fun_free_valtype: `%%`(valtype, var_2))*{var_2 <- `var_2*`, valtype <- `valtype*`}?{`var_2*` <- `var_2*?`, `valtype*` <- `valtype*?`} + -- if ((`var_2*?` = ?()) <=> (`var_1?` = ?())) + -- (fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1))?{`var_2*` <- `var_2*?`, var_1 <- `var_1?`} + -- fun_free_opt: `%%`(var_1?{var_1 <- `var_1?`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_4{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_5{blocktype : blocktype, `instr*` : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(blocktype, instr*{instr <- `instr*`}), var_0 +++ var_1) + -- fun_free_block: `%%`(instr*{instr <- `instr*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_6{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2*{instr_2 <- `instr_2*`}, var_2) + -- fun_free_block: `%%`(instr_1*{instr_1 <- `instr_1*`}, var_1) + -- fun_free_blocktype: `%%`(blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_7{labelidx : uN, var_0 : free}: + `%%`(BR_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_8{labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_9{`labelidx*` : labelidx*, labelidx' : uN, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|`var_1*`| = |`labelidx*`|) + -- (fun_free_labelidx: `%%`(labelidx, var_1))*{var_1 <- `var_1*`, labelidx <- `labelidx*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_10{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_11{labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(labelidx), var_0) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_12{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_13{labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_14{funcidx : uN, var_0 : free}: + `%%`(CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_15{typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_16{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 - def $free_instr{funcidx : uN}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 - def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 - def $free_instr{tableidx : uN, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 - def $free_instr{numtype : numtype, numlit : num_}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 - def $free_instr{numtype : numtype, unop : unop_}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 - def $free_instr{numtype : numtype, binop : binop_}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 - def $free_instr{numtype : numtype, testop : testop_}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 - def $free_instr{numtype : numtype, relop : relop_}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 - def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 - def $free_instr{vectype : vectype, veclit : uN}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 - def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 - def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 - def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 - def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 - def $free_instr{shape : shape, vunop : vunop_}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 - def $free_instr{shape : shape, vbinop : vbinop_}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 - def $free_instr{shape : shape, vternop : vternop_}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 - def $free_instr{shape : shape, vtestop : vtestop_}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 - def $free_instr{shape : shape, vrelop : vrelop_}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 - def $free_instr{ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 - def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape($proj_ishape_0(ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 - def $free_instr{bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 - def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape($proj_bshape_0(bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 - def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 - def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 - def $free_instr{shape : shape, `sx?` : sx?, laneidx : uN}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 - def $free_instr{shape : shape, laneidx : uN}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 - def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 - def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_18{funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_19{typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(typeuse), var_0) + -- fun_free_typeuse: `%%`(typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_20{tableidx : uN, typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(tableidx, typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(typeuse, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_21{numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(numtype, numlit), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_22{numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(numtype, unop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_23{numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(numtype, binop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_24{numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(numtype, testop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_25{numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(numtype, relop), var_0) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_26{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_27{vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(vectype, veclit), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_28{vectype : vectype, vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(vectype, vvunop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_29{vectype : vectype, vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(vectype, vvbinop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_30{vectype : vectype, vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(vectype, vvternop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_31{vectype : vectype, vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(vectype, vvtestop), var_0) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_32{shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(shape, vunop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_33{shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(shape, vbinop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_34{shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(shape, vternop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_35{shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(shape, vtestop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_36{shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(shape, vrelop), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_37{ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_38{ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_39{bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_40{bshape : bshape, `laneidx*` : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`}), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_41{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_42{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_43{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_45{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_46{shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(shape), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_47{shape : shape, `sx?` : sx?, laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_48{shape : shape, laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(shape, laneidx), var_0) + -- fun_free_shape: `%%`(shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_49{heaptype : heaptype, var_0 : free}: + `%%`(REF.NULL_instr(heaptype), var_0) + -- fun_free_heaptype: `%%`(heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_50: + `%%`(REF.IS_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 - def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_51: + `%%`(REF.AS_NON_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 - def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_52: + `%%`(REF.EQ_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 - def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 - def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 - def $free_instr{funcidx : uN}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 - def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_53{reftype : reftype, var_0 : free}: + `%%`(REF.TEST_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_54{reftype : reftype, var_0 : free}: + `%%`(REF.CAST_instr(reftype), var_0) + -- fun_free_reftype: `%%`(reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_55{funcidx : uN, var_0 : free}: + `%%`(REF.FUNC_instr(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_56: + `%%`(REF.I31_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 - def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_57{sx : sx}: + `%%`(I31.GET_instr(sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 - def $free_instr{typeidx : uN}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_58{typeidx : uN}: + `%%`(STRUCT.NEW_instr(typeidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 - def $free_instr{typeidx : uN}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 - def $free_instr{`sx?` : sx?, typeidx : uN, u32 : uN}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 - def $free_instr{typeidx : uN, u32 : uN}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 - def $free_instr{typeidx : uN}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 - def $free_instr{typeidx : uN}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 - def $free_instr{typeidx : uN, u32 : uN}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 - def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 - def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 - def $free_instr{`sx?` : sx?, typeidx : uN}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 - def $free_instr{typeidx : uN}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 - def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_59{typeidx : uN, var_0 : free}: + `%%`(STRUCT.NEW_DEFAULT_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_60{`sx?` : sx?, typeidx : uN, u32 : uN, var_0 : free}: + `%%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_61{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(STRUCT.SET_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_62{typeidx : uN, var_0 : free}: + `%%`(ARRAY.NEW_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_63{typeidx : uN, var_0 : free}: + `%%`(ARRAY.NEW_DEFAULT_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_64{typeidx : uN, u32 : uN, var_0 : free}: + `%%`(ARRAY.NEW_FIXED_instr(typeidx, u32), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_65{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.NEW_DATA_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_66{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.NEW_ELEM_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_67{`sx?` : sx?, typeidx : uN, var_0 : free}: + `%%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_68{typeidx : uN, var_0 : free}: + `%%`(ARRAY.SET_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_69: + `%%`(ARRAY.LEN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 - def $free_instr{typeidx : uN}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 - def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 - def $free_instr{typeidx : uN, dataidx : uN}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : uN, elemidx : uN}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 - def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_70{typeidx : uN, var_0 : free}: + `%%`(ARRAY.FILL_instr(typeidx), var_0) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_71{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.COPY_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_72{typeidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.INIT_DATA_instr(typeidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_73{typeidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY.INIT_ELEM_instr(typeidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_74: + `%%`(EXTERN.CONVERT_ANY_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 - def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_75: + `%%`(ANY.CONVERT_EXTERN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 - def $free_instr{localidx : uN}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 - def $free_instr{localidx : uN}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 - def $free_instr{localidx : uN}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 - def $free_instr{globalidx : uN}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 - def $free_instr{globalidx : uN}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 - def $free_instr{tableidx : uN}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 - def $free_instr{tableidx : uN}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 - def $free_instr{tableidx : uN}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 - def $free_instr{tableidx : uN}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 - def $free_instr{tableidx : uN}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 - def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 - def $free_instr{tableidx : uN, elemidx : uN}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 - def $free_instr{elemidx : uN}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 - def $free_instr{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 - def $free_instr{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 - def $free_instr{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 - def $free_instr{vectype : vectype, memidx : uN, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 - def $free_instr{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 - def $free_instr{memidx : uN}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 - def $free_instr{memidx : uN}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 - def $free_instr{memidx : uN}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 - def $free_instr{memidx_1 : uN, memidx_2 : uN}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 - def $free_instr{memidx : uN, dataidx : uN}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 - def $free_instr{dataidx : uN}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 -def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 - def $free_block{`instr*` : instr*, free : free}(instr*{instr <- `instr*`}) = free[LABELS_free = $shift_labelidxs(free.LABELS_free)] + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_76{localidx : uN, var_0 : free}: + `%%`(LOCAL.GET_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_77{localidx : uN, var_0 : free}: + `%%`(LOCAL.SET_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_78{localidx : uN, var_0 : free}: + `%%`(LOCAL.TEE_instr(localidx), var_0) + -- fun_free_localidx: `%%`(localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_79{globalidx : uN, var_0 : free}: + `%%`(GLOBAL.GET_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_80{globalidx : uN, var_0 : free}: + `%%`(GLOBAL.SET_instr(globalidx), var_0) + -- fun_free_globalidx: `%%`(globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_81{tableidx : uN, var_0 : free}: + `%%`(TABLE.GET_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_82{tableidx : uN, var_0 : free}: + `%%`(TABLE.SET_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_83{tableidx : uN, var_0 : free}: + `%%`(TABLE.SIZE_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_84{tableidx : uN, var_0 : free}: + `%%`(TABLE.GROW_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_85{tableidx : uN, var_0 : free}: + `%%`(TABLE.FILL_instr(tableidx), var_0) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_86{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(TABLE.COPY_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_87{tableidx : uN, elemidx : uN, var_1 : free, var_0 : free}: + `%%`(TABLE.INIT_instr(tableidx, elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(elemidx, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_88{elemidx : uN, var_0 : free}: + `%%`(ELEM.DROP_instr(elemidx), var_0) + -- fun_free_elemidx: `%%`(elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_89{numtype : numtype, `loadop?` : loadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_90{numtype : numtype, `storeop?` : storeop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_numtype: `%%`(numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_91{vectype : vectype, `vloadop?` : vloadop_?, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_92{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_93{vectype : vectype, memidx : uN, memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(vectype, memidx, memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_94{vectype : vectype, sz : sz, memidx : uN, memarg : memarg, laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx, var_1) + -- fun_free_vectype: `%%`(vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_95{memidx : uN, var_0 : free}: + `%%`(MEMORY.SIZE_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_96{memidx : uN, var_0 : free}: + `%%`(MEMORY.GROW_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_97{memidx : uN, var_0 : free}: + `%%`(MEMORY.FILL_instr(memidx), var_0) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_98{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY.COPY_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_99{memidx : uN, dataidx : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY.INIT_instr(memidx, dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(dataidx, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_100{dataidx : uN, var_0 : free}: + `%%`(DATA.DROP_instr(dataidx), var_0) + -- fun_free_dataidx: `%%`(dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 + rule fun_free_block_case_0{`instr*` : instr*, free : free, `var_2*` : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr*{instr <- `instr*`}, free[LABELS_free = var_0]) + -- if (|`var_2*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr, var_2))*{var_2 <- `var_2*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_shift_labelidxs: `%%`(free.LABELS_free, var_0) -- wf_free: `%`(free) - -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) + -- where free = var_1 {free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_expr(expr : expr) : free +relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) + rule fun_free_expr_case_0{`instr*` : instr*, `var_1*` : free*, var_0 : free}: + `%%`(instr*{instr <- `instr*`}, var_0) + -- if (|`var_1*`| = |`instr*`|) + -- (fun_free_instr: `%%`(instr, var_1))*{var_1 <- `var_1*`, instr <- `instr*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -5016,98 +5849,184 @@ relation wf_module: `%`(module) -- (wf_export: `%`(export))*{export <- `export*`} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_type(type : type) : free +relation fun_free_type: `%%`(type, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) + rule fun_free_type_case_0{rectype : rectype, var_0 : free}: + `%%`(TYPE_type(rectype), var_0) + -- fun_free_rectype: `%%`(rectype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_tag(tag : tag) : free +relation fun_free_tag: `%%`(tag, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{tagtype : typeuse}(TAG_tag(tagtype)) = $free_tagtype(tagtype) + rule fun_free_tag_case_0{tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(tagtype), var_0) + -- fun_free_tagtype: `%%`(tagtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_global(global : global) : free +relation fun_free_global: `%%`(global, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_global{globaltype : globaltype, expr : instr*}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + rule fun_free_global_case_0{globaltype : globaltype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(globaltype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_globaltype: `%%`(globaltype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_mem(mem : mem) : free +relation fun_free_mem: `%%`(mem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) + rule fun_free_mem_case_0{memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(memtype), var_0) + -- fun_free_memtype: `%%`(memtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_table(table : table) : free +relation fun_free_table: `%%`(table, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_table{tabletype : tabletype, expr : instr*}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + rule fun_free_table_case_0{tabletype : tabletype, expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(tabletype, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tabletype: `%%`(tabletype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_local(local : local) : free +relation fun_free_local: `%%`(local, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_func(func : func) : free +relation fun_free_func: `%%`(func, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_func{typeidx : uN, `local*` : local*, expr : instr*}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] + rule fun_free_func_case_0{typeidx : uN, `local*` : local*, expr : instr*, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(typeidx, local*{local <- `local*`}, expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(expr, var_3) + -- if (|`var_2*`| = |`local*`|) + -- (fun_free_local: `%%`(local, var_2))*{var_2 <- `var_2*`, local <- `local*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_typeidx: `%%`(typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_datamode(datamode : datamode) : free +relation fun_free_datamode: `%%`(datamode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{memidx : uN, expr : instr*}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + rule fun_free_datamode_case_0{memidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(memidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_memidx: `%%`(memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_data(data : data) : free +relation fun_free_data: `%%`(data, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) + rule fun_free_data_case_0{`byte*` : byte*, datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte*{byte <- `byte*`}, datamode), var_0) + -- fun_free_datamode: `%%`(datamode, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elemmode(elemmode : elemmode) : free +relation fun_free_elemmode: `%%`(elemmode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{tableidx : uN, expr : instr*}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + rule fun_free_elemmode_case_0{tableidx : uN, expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(tableidx, expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(expr, var_1) + -- fun_free_tableidx: `%%`(tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elem(elem : elem) : free +relation fun_free_elem: `%%`(elem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + rule fun_free_elem_case_0{reftype : reftype, `expr*` : expr*, elemmode : elemmode, var_3 : free, `var_2*` : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(elemmode, var_3) + -- if (|`var_2*`| = |`expr*`|) + -- (fun_free_expr: `%%`(expr, var_2))*{var_2 <- `var_2*`, expr <- `expr*`} + -- fun_free_list: `%%`(var_2*{var_2 <- `var_2*`}, var_1) + -- fun_free_reftype: `%%`(reftype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_start(start : start) : free +relation fun_free_start: `%%`(start, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{funcidx : uN}(START_start(funcidx)) = $free_funcidx(funcidx) + rule fun_free_start_case_0{funcidx : uN, var_0 : free}: + `%%`(START_start(funcidx), var_0) + -- fun_free_funcidx: `%%`(funcidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_import(import : import) : free +relation fun_free_import: `%%`(import, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) + rule fun_free_import_case_0{name_1 : name, name_2 : name, externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, externtype), var_0) + -- fun_free_externtype: `%%`(externtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_export(export : export) : free +relation fun_free_export: `%%`(export, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) + rule fun_free_export_case_0{name : name, externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(name, externidx), var_0) + -- fun_free_externidx: `%%`(externidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_module(module : module) : free +relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + rule fun_free_module_case_0{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `var_21*` : free*, var_20 : free, `var_19*` : free*, var_18 : free, `var_17?` : free?, var_16 : free, `var_15*` : free*, var_14 : free, `var_13*` : free*, var_12 : free, `var_11*` : free*, var_10 : free, `var_9*` : free*, var_8 : free, `var_7*` : free*, var_6 : free, `var_5*` : free*, var_4 : free, `var_3*` : free*, var_2 : free, `var_1*` : free*, var_0 : free}: + `%%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|`var_21*`| = |`export*`|) + -- (fun_free_export: `%%`(export, var_21))*{var_21 <- `var_21*`, export <- `export*`} + -- fun_free_list: `%%`(var_21*{var_21 <- `var_21*`}, var_20) + -- if (|`var_19*`| = |`import*`|) + -- (fun_free_import: `%%`(import, var_19))*{var_19 <- `var_19*`, import <- `import*`} + -- fun_free_list: `%%`(var_19*{var_19 <- `var_19*`}, var_18) + -- if ((`var_17?` = ?()) <=> (`start?` = ?())) + -- (fun_free_start: `%%`(start, var_17))?{var_17 <- `var_17?`, start <- `start?`} + -- fun_free_opt: `%%`(var_17?{var_17 <- `var_17?`}, var_16) + -- if (|`var_15*`| = |`elem*`|) + -- (fun_free_elem: `%%`(elem, var_15))*{var_15 <- `var_15*`, elem <- `elem*`} + -- fun_free_list: `%%`(var_15*{var_15 <- `var_15*`}, var_14) + -- if (|`var_13*`| = |`data*`|) + -- (fun_free_data: `%%`(data, var_13))*{var_13 <- `var_13*`, data <- `data*`} + -- fun_free_list: `%%`(var_13*{var_13 <- `var_13*`}, var_12) + -- if (|`var_11*`| = |`func*`|) + -- (fun_free_func: `%%`(func, var_11))*{var_11 <- `var_11*`, func <- `func*`} + -- fun_free_list: `%%`(var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`table*`|) + -- (fun_free_table: `%%`(table, var_9))*{var_9 <- `var_9*`, table <- `table*`} + -- fun_free_list: `%%`(var_9*{var_9 <- `var_9*`}, var_8) + -- if (|`var_7*`| = |`mem*`|) + -- (fun_free_mem: `%%`(mem, var_7))*{var_7 <- `var_7*`, mem <- `mem*`} + -- fun_free_list: `%%`(var_7*{var_7 <- `var_7*`}, var_6) + -- if (|`var_5*`| = |`global*`|) + -- (fun_free_global: `%%`(global, var_5))*{var_5 <- `var_5*`, global <- `global*`} + -- fun_free_list: `%%`(var_5*{var_5 <- `var_5*`}, var_4) + -- if (|`var_3*`| = |`tag*`|) + -- (fun_free_tag: `%%`(tag, var_3))*{var_3 <- `var_3*`, tag <- `tag*`} + -- fun_free_list: `%%`(var_3*{var_3 <- `var_3*`}, var_2) + -- if (|`var_1*`| = |`type*`|) + -- (fun_free_type: `%%`(type, var_1))*{var_1 <- `var_1*`, type <- `type*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $funcidx_module(module : module) : funcidx* +relation fun_funcidx_module: `%%`(module, funcidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free + rule fun_funcidx_module_case_0{module : module, var_0 : free}: + `%%`(module, var_0.FUNCS_free) + -- fun_free_module: `%%`(module, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $dataidx_funcs(func*) : dataidx* +relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free + rule fun_dataidx_funcs_case_0{`func*` : func*, `var_1*` : free*, var_0 : free}: + `%%`(func*{func <- `func*`}, var_0.DATAS_free) + -- if (|`var_1*`| = |`func*`|) + -- (fun_free_func: `%%`(func, var_1))*{var_1 <- `var_1*`, func <- `func*`} + -- fun_free_list: `%%`(var_1*{var_1 <- `var_1*`}, var_0) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax init = @@ -5171,55 +6090,87 @@ relation wf_context: `%`(context) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 -def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 - def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 - def $with_locals{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, `x*` : idx*}: + `%%%%`(C, [x_1] ++ x*{x <- `x*`}, [], C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_2{C : context, lct_1 : localtype, `lct*` : localtype*}: + `%%%%`(C, [], [lct_1] ++ lct*{lct <- `lct*`}, C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_3{C : context, x_1 : uN, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, var_0 : context}: + `%%%%`(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}, var_0) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 -def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 - def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 - def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`})] - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 + rule fun_clos_deftypes_case_1{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt*{dt <- `dt*`} ++ [dt_n], dt'*{dt' <- `dt'*`} ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt*{dt <- `dt*`}, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- where dt'*{dt' <- `dt'*`} = var_1 {dt', `dt'*`} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_valtype(context : context, valtype : valtype) : valtype +relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_valtype_case_0{C : context, t : valtype, `dt*` : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_deftype(context : context, deftype : deftype) : deftype +relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_deftype_case_0{C : context, dt : deftype, `dt'*` : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- `dt'*`}, var_0) + -- where dt'*{dt' <- `dt'*`} = var_1 {dt', `dt'*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_tagtype(context : context, tagtype : tagtype) : tagtype +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_tagtype{C : context, jt : typeuse, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, `dt*` : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_externtype(context : context, externtype : externtype) : externtype +relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_externtype_case_0{C : context, xt : externtype, `dt*` : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_moduletype(context : context, moduletype : moduletype) : moduletype +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, `dt*` : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = var_1 {dt, `dt*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5281,10 +6232,11 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype}: + rule _{deftype : deftype, comptype : comptype, var_0 : comptype}: `%~~%`(deftype, comptype) + -- fun_expanddt: `%%`(deftype, var_0) -- wf_comptype: `%`(comptype) - -- if ($expanddt(deftype) = comptype) + -- if (var_0 = comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -5303,13 +6255,22 @@ def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool def $before{j : nat, x : uN, i : nat}(REC_typeuse(j), x, i) = (j < i) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht(context : context, heaptype : heaptype) : subtype +relation fun_unrollht: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{rectype : rectype, n : n, C : context}(C, _DEF_heaptype(rectype, n)) = $unrolldt(_DEF_deftype(rectype, n)) + rule fun_unrollht_case_0{rectype : rectype, n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(rectype, n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(rectype, n), var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, typeidx : uN}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(typeidx).0]) + rule fun_unrollht_case_1{C : context, typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(typeidx), var_0) + -- if ($proj_uN_0(typeidx).0 < |C.TYPES_context|) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(typeidx).0], var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + rule fun_unrollht_case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5449,8 +6410,11 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) + -- if (|`var_0*`| = |`x*`|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- `var_0*`, x <- `x*`} -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) @@ -5458,9 +6422,9 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, `x'*` <- `x'**`} -- if (|x*{x <- `x*`}| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`x'**`|) + -- (if (var_0 = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `x'*` <- `x'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5495,8 +6459,10 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 - rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: + rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype, `var_0*` : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + -- if (|`var_0*`| = |`typeuse*`|) + -- (fun_unrollht: `%%%`(C, $heaptype_typeuse(typeuse), var_0))*{var_0 <- `var_0*`, typeuse <- `typeuse*`} -- wf_context: `%`(C) -- wf_comptype: `%`(comptype) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse*{typeuse <- `typeuse*`}, compttype)) @@ -5505,8 +6471,9 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- if (|typeuse*{typeuse <- `typeuse*`}| <= 1) -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- if (|`comptype'*`| = |`typeuse*`|) - -- (if ($unrollht(C, $heaptype_typeuse(typeuse)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- if (|`var_0*`| = |`comptype'*`|) + -- if (|`var_0*`| = |`typeuse'**`|) + -- (if (var_0 = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{var_0 <- `var_0*`, comptype' <- `comptype'*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} @@ -5572,17 +6539,20 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 - rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) -- wf_context: `%`(C) - -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- if (var_0 = var_1) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat}: + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?` : final?, `typeuse*` : typeuse*, ct : comptype, i : nat, var_0 : subtype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_unrolldt: `%%`(deftype_1, var_0) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + -- if (var_0 = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse*{typeuse <- `typeuse*`}[i]), $heaptype_deftype(deftype_2)) @@ -6104,8 +7074,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[$proj_uN_0(l).0]) @@ -6115,8 +7086,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -6137,35 +7109,55 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -def $default_(valtype : valtype) : val? +relation fun_default_: `%%`(valtype, val?) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I32_valtype) = ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + rule fun_default__case_0: + `%%`(I32_valtype, ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0))))) -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I64_valtype) = ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + rule fun_default__case_1: + `%%`(I64_valtype, ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0))))) -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, `%`_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(F32_valtype) = ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(F64_valtype) = ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, `%`_vec_(0))) + rule fun_default__case_4: + `%%`(V128_valtype, ?(VCONST_val(V128_vectype, `%`_vec_(0)))) -- wf_val: `%`(VCONST_val(V128_vectype, `%`_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(REF.NULL_val(ht))) -- wf_val: `%`(REF.NULL_val(ht)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?()) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_7: + `%%`(BOT_valtype, ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: + rule _{t : valtype, var_0 : val?}: `|-%DEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) + -- if (var_0 =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -6177,9 +7169,11 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) -- if (m < (2 ^ $size($numtype_addrtype(at)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -def $is_packtype(storagetype : storagetype) : bool +relation fun_is_packtype: `%%`(storagetype, bool) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = $storagetype_valtype($unpack(zt))) + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt = $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -6316,12 +7310,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 - rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(var_0)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6330,8 +7325,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 - rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype, var_0 : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_1)]), [], `%`_resulttype(t*{t <- `t*`} ++ [$valtype_reftype(rt_2)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) @@ -6341,7 +7337,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: @@ -6446,8 +7442,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 @@ -6548,46 +7545,53 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*, `var_0*` : valtype*}: + `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|`var_0*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0*{var_0 <- `var_0*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*, `var_0*` : valtype*}: `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|`var_0*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- `var_0*`, zt <- `zt*`} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- `var_0*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 - rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if ($proj_uN_0(i).0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> var_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT.SET_instr(x, i)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- wf_fieldtype: `%`(`%%`_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) @@ -6596,32 +7600,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (ft*{ft <- `ft*`}[$proj_uN_0(i).0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([var_0 I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype, var_0 : valtype}: `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`(var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(var_0^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -6639,35 +7646,39 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.NEW_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 - rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.GET_instr(sx?{sx <- `sx?`}, x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([var_0]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} = ?()) <=> var_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array.set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule array.set{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.SET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) @@ -6680,11 +7691,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array.fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule array.fill{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) @@ -6716,15 +7728,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype, var_0 : valtype}: `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - -- if (($unpack(zt) = $valtype_numtype(numtype)) \/ ($unpack(zt) = $valtype_vectype(vectype))) + -- if ((var_0 = $valtype_numtype(numtype)) \/ (var_0 = $valtype_vectype(vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) @@ -7203,12 +8216,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 - rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: + rule vshuffle{C : context, sh : bshape, `i*` : laneidx*, var_0 : dim}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($dim($proj_bshape_0(sh).0)).0)))*{i <- `i*`} + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- `i*`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: @@ -7218,20 +8232,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([$valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 - rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: + rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx, var_0 : dim}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- fun_dim: `%%`(sh, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([$valtype_numtype($unpackshape(sh))]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 - rule vreplace_lane{C : context, sh : shape, i : laneidx}: + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) + -- fun_dim: `%%`(sh, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], `%`_resulttype([V128_valtype]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($dim(sh)).0) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: @@ -7277,8 +8293,9 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 - rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*, var_0 : context}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- fun_with_locals: `%%%%`(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(instr_1) -- (wf_instr: `%`(instr_2))*{instr_2 <- `instr_2*`} @@ -7292,7 +8309,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- if (|`init*`| = |`x_1*`|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} - -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) + -- Instrs_ok: `%|-%:%`(var_0, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: @@ -7329,10 +8346,11 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule _{t : valtype}: + rule _{t : valtype, var_0 : val?}: `|-%NONDEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) -- wf_valtype: `%`(t) - -- if ($default_(t) = ?()) + -- if (var_0 = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) @@ -7451,20 +8469,22 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: + rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx, var_0 : deftype*}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) + -- fun_rolldt: `%%%`(x, rectype, var_0) -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) - -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) + -- if (dt*{dt <- `dt*`} = var_0) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, tagtype : tagtype}: - `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) + rule _{C : context, tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(tagtype), var_0) + -- fun_clos_tagtype: `%%%`(C, tagtype, var_0) -- wf_context: `%`(C) -- wf_tag: `%`(TAG_tag(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) @@ -7615,8 +8635,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: - `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + rule _{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- fun_clos_externtype: `%%%`(C, xt, var_0) -- wf_context: `%`(C) -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) @@ -7734,16 +8755,25 @@ relation wf_nonfuncs: `%`(nonfuncs) -- (wf_elem: `%`(elem))*{elem <- `elem*`} ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + rule fun_funcidx_nonfuncs_case_0{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, var_0 : funcidx*}: + `%%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}), var_0) + -- fun_funcidx_module: `%%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), []), var_0) -- wf_module: `%`(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), var_0) + -- fun_funcsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_6) + -- fun_tablesxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_5) + -- fun_memsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_4) + -- fun_globalsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_3) + -- fun_tagsxt: `%%`(xt_I*{xt_I <- `xt_I*`}, var_2) + -- fun_funcidx_nonfuncs: `%%`(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}), var_1) + -- fun_clos_moduletype: `%%%`(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- `nm*`} @@ -7777,12 +8807,12 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) - -- if (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`})) - -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) - -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) + -- if (x*{x <- `x*`} = var_1) + -- if (jt_I*{jt_I <- `jt_I*`} = var_2) + -- if (gt_I*{gt_I <- `gt_I*`} = var_3) + -- if (mt_I*{mt_I <- `mt_I*`} = var_4) + -- if (tt_I*{tt_I <- `tt_I*`} = var_5) + -- if (dt_I*{dt_I <- `dt_I*`} = var_6) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = @@ -7905,60 +8935,80 @@ def $inv_zbytes_(storagetype : storagetype, byte*) : lit_ def $inv_cbytes_(Cnn : Cnn, byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $signed_(N : N, nat : nat) : int +relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = (i : nat <:> int) + rule fun_signed__case_0{N : nat, i : nat}: + `%%%`(N, i, (i : nat <:> int)) -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{N : nat, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) + rule fun_signed__case_1{N : nat, i : nat}: + `%%%`(N, i, ((i : nat <:> int) - ((2 ^ N) : nat <:> int))) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_signed_(N : N, int : int) : nat +relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = (i : int <:> nat) + rule fun_inv_signed__case_0{N : nat, i : int}: + `%%%`(N, i, (i : int <:> nat)) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{N : nat, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) + rule fun_inv_signed__case_1{N : nat, i : int}: + `%%%`(N, i, ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $sx(storagetype : storagetype) : sx? +def $sx(storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I32_storagetype) = ?() + def $sx(I32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I64_storagetype) = ?() + def $sx(I64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(F32_storagetype) = ?() + def $sx(F32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(F64_storagetype) = ?() + def $sx(F64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(V128_storagetype) = ?() + def $sx(V128_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I8_storagetype) = ?(S_sx) + def $sx(I8_storagetype) = ?(?(S_sx)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx(I16_storagetype) = ?(S_sx) + def $sx(I16_storagetype) = ?(?(S_sx)) + def $sx{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $zero(lanetype : lanetype) : lane_ +relation fun_zero: `%%`(lanetype, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, `%`_uN(0)) + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, `%`_uN(0)) + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, `%`_uN(0)) + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, `%`_uN(0)) + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, `%`_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat @@ -7992,7 +9042,8 @@ def $ineg_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{N : nat, i_1 : uN}(N, i_1) = (if ($signed_(N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + def $iabs_{N : nat, i_1 : uN, var_0 : int}(N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(N, i_1)) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iclz_(N : N, iN : iN) : iN @@ -8004,13 +9055,18 @@ def $ictz_(N : N, iN : iN) : iN def $ipopcnt_(N : N, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN) : iN +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, U_sx, i) = `%`_iN(($proj_uN_0(i).0 \ (2 ^ M))) + rule fun_iextend__case_0{N : nat, M : nat, i : uN}: + `%%%%%`(N, M, U_sx, i, `%`_iN(($proj_uN_0(i).0 \ (2 ^ M)))) -- wf_uN: `%%`(N, `%`_uN(($proj_uN_0(i).0 \ (2 ^ M)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : nat, M : nat, i : uN}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $signed_(M, ($proj_uN_0(i).0 \ (2 ^ M)))))) + rule fun_iextend__case_1{N : nat, M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(N, M, S_sx, i, `%`_iN(var_0)) + -- fun_signed_: `%%%`(M, ($proj_uN_0(i).0 \ (2 ^ M)), var_1) + -- fun_inv_signed_: `%%%`(N, var_1, var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN, iN : iN) : iN @@ -8031,34 +9087,58 @@ def $imul_(N : N, iN : iN, iN : iN) : iN -- wf_uN: `%%`(N, `%`_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $idiv_(N : N, sx : sx, iN : iN, iN : iN) : iN? +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + rule fun_idiv__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) -- wf_uN: `%%`(N, `%`_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_idiv__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?() - -- if ((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + rule fun_idiv__case_3{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $truncz((($signed_(N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(N, $proj_uN_0(i_2).0) : int <:> rat)))))) + rule fun_idiv__case_4{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irem_(N : N, sx : sx, iN : iN, iN : iN) : iN? +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, U_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_0{N : nat, i_1 : uN}: + `%%%%%`(N, U_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + rule fun_irem__case_1{N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(N, U_sx, i_1, i_2, ?(`%`_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) -- wf_uN: `%%`(N, `%`_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN}(N, S_sx, i_1, `%`_iN(0)) = ?() + rule fun_irem__case_2{N : nat, i_1 : uN}: + `%%%%%`(N, S_sx, i_1, `%`_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(N, $proj_uN_0(i_2).0))) + rule fun_irem__case_3{N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(N, S_sx, i_1, i_2, ?(`%`_iN(var_0))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8069,7 +9149,9 @@ def $imin_(N : N, sx : sx, iN : iN, iN : iN) : iN def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imin_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8080,7 +9162,9 @@ def $imax_(N : N, sx : sx, iN : iN, iN : iN) : iN def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = (if ($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imax_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8088,8 +9172,11 @@ def $iadd_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) + $signed_(N, $proj_uN_0(i_2).0)))))) + def $iadd_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 + var_2)), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8097,8 +9184,11 @@ def $isub_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) -- wf_uN: `%%`(N, `%`_uN($sat_u_(N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(N, `%`_uN($inv_signed_(N, $sat_s_(N, ($signed_(N, $proj_uN_0(i_1).0) - $signed_(N, $proj_uN_0(i_2).0)))))) + def $isub_sat_{N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(N, S_sx, i_1, i_2) = `%`_iN(var_0) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(N, $sat_s_(N, (var_1 - var_2)), var_0) + -- wf_uN: `%%`(N, `%`_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN, iN : iN) : iN @@ -8146,15 +9236,17 @@ def $ibitselect_(N : N, iN : iN, iN : iN, iN : iN) : iN def $irelaxed_laneselect_(N : N, iN : iN, iN : iN, iN : iN) : iN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ieqz_(N : N, iN : iN) : u32 +relation fun_ieqz_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 = 0))) + rule fun_ieqz__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 = 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inez_(N : N, iN : iN) : u32 +relation fun_inez_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : nat, i_1 : uN}(N, i_1) = `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + rule fun_inez__case_0{N : nat, i_1 : uN}: + `%%%`(N, i_1, `%`_u32($bool(($proj_uN_0(i_1).0 =/= 0)))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8175,8 +9267,10 @@ def $ilt_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) < $signed_(N, $proj_uN_0(i_2).0))))) + def $ilt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 < var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -8184,8 +9278,10 @@ def $igt_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) > $signed_(N, $proj_uN_0(i_2).0))))) + def $igt_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 > var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -8193,8 +9289,10 @@ def $ile_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) <= $signed_(N, $proj_uN_0(i_2).0))))) + def $ile_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 <= var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 @@ -8202,8 +9300,10 @@ def $ige_(N : N, sx : sx, iN : iN, iN : iN) : u32 def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, U_sx, i_1, i_2) = `%`_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, `%`_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : nat, i_1 : uN, i_2 : uN}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, `%`_uN($bool(($signed_(N, $proj_uN_0(i_1).0) >= $signed_(N, $proj_uN_0(i_2).0))))) + def $ige_{N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(N, S_sx, i_1, i_2) = `%`_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, `%`_uN($bool((var_0 >= var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN) : fN* @@ -8314,273 +9414,452 @@ def $narrow__(M : M, N : N, sx : sx, iN : iN) : iN def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_) : num_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lpacknum_(lanetype : lanetype, num_ : num_) : lane_ +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(I32_storagetype, c) = c + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(I64_storagetype, c) = c + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(F32_storagetype, c) = c + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(F64_storagetype, c) = c + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(V128_storagetype, c) = c + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lunpacknum_(lanetype : lanetype, lane_ : lane_) : num_ +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cunpacknum_(storagetype : storagetype, lit_ : lit_) : lit_ +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + rule fun_cunpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + rule fun_cunpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $unop_(numtype : numtype, unop_ : unop_, num_ : num_) : num_* +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i))) + rule fun_unop__case_6{M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i))) + rule fun_unop__case_7{M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop_(numtype : numtype, binop_ : binop_, num_ : num_, num_ : num_) : num_* +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + rule fun_binop__case_6{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + rule fun_binop__case_7{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2))} + rule fun_binop__case_8{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2))} + rule fun_binop__case_9{sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_18{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_19{sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), sx, i_1, `%`_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $testop_(numtype : numtype, testop_ : testop_, num_ : num_) : u32 +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 @@ -8634,121 +9913,192 @@ def $relop_(numtype : numtype, relop_ : relop_, num_ : num_, num_ : num_) : u32 def $relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__, num_ : num_) : num_* +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + rule fun_cvtop___case_0{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))] + rule fun_cvtop___case_1{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + rule fun_cvtop___case_2{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))] + rule fun_cvtop___case_3{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + rule fun_cvtop___case_8{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + rule fun_cvtop___case_9{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + rule fun_cvtop___case_10{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + rule fun_cvtop___case_11{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + rule fun_cvtop___case_12{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + rule fun_cvtop___case_13{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + rule fun_cvtop___case_14{sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + rule fun_cvtop___case_15{sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + rule fun_cvtop___case_16{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))] + rule fun_cvtop___case_17{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + rule fun_cvtop___case_18{sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))] + rule fun_cvtop___case_19{sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) @@ -8759,202 +10109,392 @@ def $lanes_(shape : shape, vec_ : vec_) : lane_* def $inv_lanes_(shape : shape, lane_*) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : zero? +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?() + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = ?() + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = zero?{zero <- `zero?`} + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), zero?{zero <- `zero?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?(zero) + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?(zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__) : half? +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half : half, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx))) = ?(half) + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, half : half, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), ?(half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx))) = half?{half <- `half?`} + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), half?{half <- `half?`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`}))) = ?() + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, zero : zero}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero))) = ?() + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat @@ -8972,7 +10512,8 @@ def $iswizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN*, iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if ($signed_(N, $proj_uN_0(i).0) < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + def $irelaxed_swizzle_lane_{N : nat, `c*` : iN*, i : uN, var_0 : int}(N, c*{c <- `c*`}, i) = (if ($proj_uN_0(i).0 < |c*{c <- `c*`}|) then c*{c <- `c*`}[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then `%`_iN(0) else $relaxed2($R_swizzle, syntax iN, `%`_iN(0), c*{c <- `c*`}[($proj_uN_0(i).0 \ |c*{c <- `c*`}|)]))) + -- fun_signed_: `%%%`(N, $proj_uN_0(i).0, var_0) -- wf_uN: `%%`(N, `%`_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8982,29 +10523,29 @@ def $ivunop_(shape : shape, def $f_(N : N, iN : iN) : iN, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{M : nat, def $f_(N : N, iN : iN) : iN, v_1 : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* @@ -9013,15 +10554,15 @@ def $fvunop_(shape : shape, def $f_(N : N, fN : fN) : fN*, vec_ : vec_) : vec_* -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{M : nat, def $f_(N : N, fN : fN) : fN*, v_1 : uN, `c**` : lane_**, `c_1*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- `c_1*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, vec_ : vec_) : vec_* @@ -9031,36 +10572,36 @@ def $ivbinop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -9070,36 +10611,36 @@ def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, s -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`})] -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, vec_ : vec_, vec_ : vec_) : vec_* @@ -9108,33 +10649,33 @@ def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN* -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : iN*, sx : sx, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_) : vec_* @@ -9143,17 +10684,17 @@ def $fvbinop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : fN*, vec_ : vec_ -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -9162,37 +10703,37 @@ def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{M : nat, def $f_(N : N, iN : iN, iN : iN, iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* @@ -9201,19 +10742,19 @@ def $fvternop_(shape : shape, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{M : nat, def $f_(N : N, fN : fN, fN : fN, fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, `c**` : lane_**, `c_1*` : lane_*, `c_2*` : lane_*, `c_3*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_3) {c_3, `c_3*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}) {c, `c*`, `c**`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -9222,33 +10763,33 @@ def $ivrelop_(shape : shape, def $f_(N : N, iN : iN, iN : iN) : u32, vec_ : vec_ -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{M : nat, def $f_(N : N, iN : iN, iN : iN) : u32, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ @@ -9257,33 +10798,33 @@ def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, iN : iN) : u32, sx : sx, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, `%`_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_, vec_ : vec_) : vec_ @@ -9293,9 +10834,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{M : nat, def $f_(N : N, fN : fN, fN : fN) : u32, v_1 : uN, v_2 : uN, Inn : addrtype, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(F64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M)), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))*{c <- `c*`}) @@ -9303,9 +10844,9 @@ def $fvrelop_(shape : shape, def $f_(N : N, fN : fN, fN : fN) : u32, vec_ : vec_ -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(Inn), `%`_dim(M))), mk_lane__0_lane_($numtype_addrtype(Inn), mk_num__0_num_(Inn, `%`_uN($proj_uN_0(c).0)))))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) -- (wf_uN: `%%`(1, `%`_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- `c_1*`, c_2 <- `c_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, `%`_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- `c_1*`, c_2 <- `c_2*`} {c, `c*`} -- if ($isize(Inn) = $fsize(F64_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9315,29 +10856,29 @@ def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN, u32 : u32) : iN, vec_ : v -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{M : nat, def $f_(N : N, iN : iN, u32 : u32) : iN, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, vec_ : vec_, u32 : u32) : vec_ @@ -9346,63 +10887,74 @@ def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : i -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{M : nat, def $f_(N : N, sx : sx, iN : iN, u32 : u32) : iN, sx : sx, v_1 : uN, i : uN, `c*` : iN*, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)), i)*{c_1 <- `c_1*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(shape : shape, vec_ : vec_) : u32 +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_0{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_1{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_2{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_3{M : nat, v_1 : uN, c : uN, `c_1*` : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} -- (wf_bit: `%`(`%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)))*{c_1 <- `c_1*`} -- wf_bit: `%`(`%`_bit(0)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} -- if ($ibits_(32, c) = `%`_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), `%`_iN(0))).0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9413,75 +10965,86 @@ def $ivswizzlop_(shape : shape, def $f_(N : N, iN*, iN : iN) : iN, vec_ : vec_, -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{M : nat, def $f_(N : N, iN*, iN : iN) : iN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- `c_1*`}, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`}) + rule fun_ivshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), c*{c <- `c*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`}) + rule fun_ivshufflop__case_1{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), c*{c <- `c*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`}) + rule fun_ivshufflop__case_2{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), c*{c <- `c*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`}) + rule fun_ivshufflop__case_3{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, `c*` : lane_*, `c_1*` : lane_*, `c_2*` : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), c*{c <- `c*`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c))*{c <- `c*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))), c_2))*{c_2 <- `c_2*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`}) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v_2) {c_2, `c_2*`} + -- (if ($proj_uN_0(i).0 < |c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}|))*{i <- `i*`} + -- where c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[$proj_uN_0(i).0]*{i <- `i*`} {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_) : vec_* @@ -9505,795 +11068,1245 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_, vec_ : vec_, def $vvternop_{Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vunop_(shape : shape, vunop_ : vunop_, vec_ : vec_) : vec_* +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v) + rule fun_vunop__case_0{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v) + rule fun_vunop__case_1{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v) + rule fun_vunop__case_2{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fneg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v) + rule fun_vunop__case_3{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fneg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v) + rule fun_vunop__case_4{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsqrt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v) + rule fun_vunop__case_5{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsqrt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v) + rule fun_vunop__case_6{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fceil_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v) + rule fun_vunop__case_7{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fceil_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v) + rule fun_vunop__case_8{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ffloor_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v) + rule fun_vunop__case_9{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ffloor_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v) + rule fun_vunop__case_10{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $ftrunc_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v) + rule fun_vunop__case_11{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $ftrunc_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v) + rule fun_vunop__case_12{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F32_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fnearest_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v) + rule fun_vunop__case_13{M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vunop__1_vunop_(F64_Fnn, M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fnearest_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v) + rule fun_vunop__case_14{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v) + rule fun_vunop__case_15{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v) + rule fun_vunop__case_16{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v) + rule fun_vunop__case_17{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v) + rule fun_vunop__case_18{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v) + rule fun_vunop__case_19{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v) + rule fun_vunop__case_20{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v) + rule fun_vunop__case_21{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v) + rule fun_vunop__case_22{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I32_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v) + rule fun_vunop__case_23{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I64_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v) + rule fun_vunop__case_24{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I8_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{M : nat, v : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v) + rule fun_vunop__case_25{M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vunop__0_vunop_(I16_Jnn, M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbinop_(shape : shape, vbinop_ : vbinop_, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_8{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_9{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_10{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_11{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + rule fun_vbinop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + rule fun_vbinop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + rule fun_vbinop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + rule fun_vbinop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, ADD_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + rule fun_vbinop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + rule fun_vbinop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + rule fun_vbinop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + rule fun_vbinop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, SUB_SAT_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + rule fun_vbinop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + rule fun_vbinop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + rule fun_vbinop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2) + rule fun_vbinop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MIN_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imin_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + rule fun_vbinop__case_24{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + rule fun_vbinop__case_25{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + rule fun_vbinop__case_26{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2) + rule fun_vbinop__case_27{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, MAX_vbinop_Jnn_M(sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $imax_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_36{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I32_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_37{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I64_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_38{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I8_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_39{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vbinop__0_vbinop_(I16_Jnn, M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + rule fun_vbinop__case_40{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2) + rule fun_vbinop__case_41{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + rule fun_vbinop__case_42{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2) + rule fun_vbinop__case_43{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fsub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + rule fun_vbinop__case_44{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2) + rule fun_vbinop__case_45{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + rule fun_vbinop__case_46{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2) + rule fun_vbinop__case_47{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fdiv_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + rule fun_vbinop__case_48{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2) + rule fun_vbinop__case_49{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + rule fun_vbinop__case_50{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2) + rule fun_vbinop__case_51{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + rule fun_vbinop__case_52{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2) + rule fun_vbinop__case_53{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + rule fun_vbinop__case_54{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2) + rule fun_vbinop__case_55{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fpmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + rule fun_vbinop__case_56{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + rule fun_vbinop__case_57{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + rule fun_vbinop__case_58{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F32_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + rule fun_vbinop__case_59{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vbinop__1_vbinop_(F64_Fnn, M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vternop_(shape : shape, vternop_ : vternop_, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_* +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_0{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I32_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_1{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I64_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_2{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I8_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_3{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vternop__0_vternop_(I16_Jnn, M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + rule fun_vternop__case_4{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + rule fun_vternop__case_5{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + rule fun_vternop__case_6{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F32_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + rule fun_vternop__case_7{M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vternop__1_vternop_(F64_Fnn, M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vrelop_(shape : shape, vrelop_ : vrelop_, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_2{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_3{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_4{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_5{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_6{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_7{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + rule fun_vrelop__case_8{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + rule fun_vrelop__case_9{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + rule fun_vrelop__case_10{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + rule fun_vrelop__case_11{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ilt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + rule fun_vrelop__case_12{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + rule fun_vrelop__case_13{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + rule fun_vrelop__case_14{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2) + rule fun_vrelop__case_15{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GT_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $igt_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + rule fun_vrelop__case_16{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + rule fun_vrelop__case_17{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + rule fun_vrelop__case_18{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2) + rule fun_vrelop__case_19{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, LE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ile_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + rule fun_vrelop__case_20{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I32_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + rule fun_vrelop__case_21{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I64_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + rule fun_vrelop__case_22{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I8_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2) + rule fun_vrelop__case_23{M : nat, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M)), mk_vrelop__0_vrelop_(I16_Jnn, M, GE_vrelop_Jnn_M(sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ige_, sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + rule fun_vrelop__case_24{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2) + rule fun_vrelop__case_25{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $feq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + rule fun_vrelop__case_26{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2) + rule fun_vrelop__case_27{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fne_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + rule fun_vrelop__case_28{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2) + rule fun_vrelop__case_29{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $flt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + rule fun_vrelop__case_30{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2) + rule fun_vrelop__case_31{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fgt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + rule fun_vrelop__case_32{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2) + rule fun_vrelop__case_33{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fle_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + rule fun_vrelop__case_34{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F32_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2) + rule fun_vrelop__case_35{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M)), mk_vrelop__1_vrelop_(F64_Fnn, M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M)), def $fge_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, lane_ : lane_) : lane_* +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, `half?` : half?, sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half?{half <- `half?`}, sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`}) + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, sx : sx, `zero?` : zero?, c_1 : fN, `c?` : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(sx, zero?{zero <- `zero?`})), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- `c?`})) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- `c?`} - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1)) + -- where c?{c <- `c?`} = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), sx, c_1) {c, `c?`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F32_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`} + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, `c*` : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, `%`_dim(M_1)), `%X%`_shape(F64_lanetype, `%`_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), `%`_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- `c*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c*{c <- `c*`} = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__, vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, `var_2*` : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1, v) + -- if (|`var_2*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1, var_2))*{var_2 <- `var_2*`, c_1 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M))) - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_2*{var_2 <- `var_2*`}) {c, `c*`, `c**`} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, half : half, `c_1*` : lane_*, `c**` : lane_**, `var_1*` : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (var_0 = ?(half)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2] {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`}) {c, `c*`, `c**`} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, `c_1*` : lane_*, `c**` : lane_**, var_2 : lane_, `var_1*` : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|`var_1*`| = |`c_1*`|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- `var_1*`, c_1 <- `c_1*`} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`(Lnn_2, c))*{c <- `c*`}*{`c*` <- `c**`} -- wf_shape: `%`(`%X%`_shape(Lnn_1, `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, `%`_dim(M_2))) - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) + -- if (var_0 = ?(ZERO_zero)) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_, var_1*{var_1 <- `var_1*`} ++ [var_2]^M_1{}) {c, `c*`, `c**`} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_, vec_ : vec_, u32 : u32) : vec_ +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i) + rule fun_vshiftop__case_0{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i) + rule fun_vshiftop__case_1{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i) + rule fun_vshiftop__case_2{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i) + rule fun_vshiftop__case_3{M : nat, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + rule fun_vshiftop__case_4{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I32_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + rule fun_vshiftop__case_5{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I64_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + rule fun_vshiftop__case_6{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I8_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{M : nat, sx : sx, v : uN, i : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i) + rule fun_vshiftop__case_7{M : nat, sx : sx, v : uN, i : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), mk_vshiftop__0_vshiftop_(I16_Jnn, M, SHR_vshiftop_Jnn_M(sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), def $ishr_, sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbitmaskop_(ishape : ishape, vec_ : vec_) : u32 +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v) + rule fun_vbitmaskop__case_0{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v) + rule fun_vbitmaskop__case_1{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v) + rule fun_vbitmaskop__case_2{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{M : nat, v : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v) + rule fun_vbitmaskop__case_3{M : nat, v : uN, var_0 : u32}: + `%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + rule fun_vswizzlop__case_0{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : nat, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + rule fun_vswizzlop__case_1{M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), mk_vswizzlop__0_vswizzlop_(M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + rule fun_vshufflop__case_0{M : nat, `i*` : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2, var_0) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, `%`_dim(M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10301,13 +12314,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10315,13 +12332,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10329,13 +12350,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10343,13 +12368,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10357,13 +12386,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10371,13 +12404,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10385,13 +12422,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10399,13 +12440,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10413,13 +12458,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10427,13 +12476,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10441,13 +12494,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10455,13 +12512,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10469,13 +12530,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10483,13 +12548,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10497,13 +12566,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2) = v + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN, v_2 : uN, v : uN, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_2))*{c_2 <- `c_2*`} @@ -10511,11 +12584,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_, vec_ : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- `c'_1*`} -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- `c'_2*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2) {c_2, `c_2*`} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- `c_2*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- `c'_1*`} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- `c'_2*`}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN*) : iN* @@ -10534,9 +12609,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10544,9 +12619,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10554,9 +12629,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10564,9 +12639,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10574,9 +12649,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10584,9 +12659,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10594,9 +12669,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10604,9 +12679,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10614,9 +12689,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10624,9 +12699,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10634,9 +12709,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10644,9 +12719,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10654,9 +12729,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10664,9 +12739,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10674,9 +12749,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*) : iN*, sx : sx, v_1 : uN, `c*` : iN*, `c_1*` : lane_*, `c'_1*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10684,74 +12759,105 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*) : iN*, sx -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1) {c_1, `c_1*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__, vec_ : vec_) : vec_ +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, sx : sx, v_1 : uN}: + `%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) @@ -10782,11 +12888,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10796,11 +12902,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10810,11 +12916,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I32_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10824,11 +12930,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10838,11 +12944,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10852,11 +12958,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10866,11 +12972,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I64_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10880,11 +12986,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10894,11 +13000,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10908,11 +13014,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10922,11 +13028,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I8_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10936,11 +13042,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I32_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10950,11 +13056,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I64_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10964,11 +13070,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I8_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10978,11 +13084,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, `c*` : iN*, `c_1*` : lane_*, `c_2*` : lane_*, `c'_1*` : iN*, `c'_2*` : iN*}(`%X%`_shape(I16_lanetype, `%`_dim(M_1)), `%X%`_shape(I16_lanetype, `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- `c*`}) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), c_1))*{c_1 <- `c_1*`} @@ -10992,11 +13098,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN*, iN*) : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- `c*`} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`}) - -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) + -- where c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1, `c_1*`} + -- where c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2, `c_2*`} + -- where c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- `c_1*`} {c'_1, `c'_1*`} + -- where c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- `c_2*`} {c'_2, `c'_2*`} + -- where c*{c <- `c*`} = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}) {c, `c*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(N : N, iN*, iN*) : iN* @@ -11004,300 +13110,399 @@ def $ivmul_(N : N, iN*, iN*) : iN* def $ivmul_{N : nat, `i_1*` : iN*, `i_2*` : iN*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, half : half, sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(half, sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN($half(half, 0, M_2))) -- wf_uN: `%%`(8, `%`_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_uN: `%%`(8, `%`_uN(0)) -- wf_uN: `%%`(8, `%`_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__, vec_ : vec_, vec_ : vec_, vec_ : vec_) : vec_ +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11309,12 +13514,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11326,12 +13537,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11343,12 +13560,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11360,12 +13583,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11377,12 +13606,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11394,12 +13629,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11411,12 +13652,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11428,12 +13675,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11445,12 +13698,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11462,12 +13721,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11479,12 +13744,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11496,12 +13767,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11513,12 +13790,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11530,12 +13813,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11547,12 +13836,18 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN}(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, Jnn : Jnn, M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_1))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11564,10 +13859,11 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_1))), `%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, Jnn, M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), `%`_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2))), mk_vextunop___0_vextunop__(Jnn, M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), `%`_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- where M = (2 * M_2) {M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -12011,240 +14307,443 @@ def $Ki : nat def $Ki = 1024 ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(storagetype : storagetype, val : val) : fieldval +relation fun_packfield_: `%%%`(storagetype, val, fieldval?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(BOT_storagetype, val) = $fieldval_val(val) + rule fun_packfield__case_0{val : val}: + `%%%`(BOT_storagetype, val, ?($fieldval_val(val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{`null?` : null?, heaptype : heaptype, val : val}(REF_storagetype(null?{null <- `null?`}, heaptype), val) = $fieldval_val(val) + rule fun_packfield__case_1{`null?` : null?, heaptype : heaptype, val : val}: + `%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), val, ?($fieldval_val(val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(V128_storagetype, val) = $fieldval_val(val) + rule fun_packfield__case_2{val : val}: + `%%%`(V128_storagetype, val, ?($fieldval_val(val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(F64_storagetype, val) = $fieldval_val(val) + rule fun_packfield__case_3{val : val}: + `%%%`(F64_storagetype, val, ?($fieldval_val(val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(F32_storagetype, val) = $fieldval_val(val) + rule fun_packfield__case_4{val : val}: + `%%%`(F32_storagetype, val, ?($fieldval_val(val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(I64_storagetype, val) = $fieldval_val(val) + rule fun_packfield__case_5{val : val}: + `%%%`(I64_storagetype, val, ?($fieldval_val(val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{val : val}(I32_storagetype, val) = $fieldval_val(val) + rule fun_packfield__case_6{val : val}: + `%%%`(I32_storagetype, val, ?($fieldval_val(val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)))) -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)))) -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_9{x0 : storagetype, x1 : val}: + `%%%`(x0, x1, ?()) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + rule fun_unpackfield__case_0{addrref : addrref}: + `%%%%`(BOT_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + rule fun_unpackfield__case_1{addrref : addrref, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + rule fun_unpackfield__case_2{addrref : addrref}: + `%%%%`(V128_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + rule fun_unpackfield__case_3{addrref : addrref}: + `%%%%`(F64_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + rule fun_unpackfield__case_4{addrref : addrref}: + `%%%%`(F32_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + rule fun_unpackfield__case_5{addrref : addrref}: + `%%%%`(I64_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{addrref : addrref}(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref)) = REF.EXTERN_val(addrref) + rule fun_unpackfield__case_6{addrref : addrref}: + `%%%%`(I32_storagetype, ?(), REF.EXTERN_fieldval(addrref), ?(REF.EXTERN_val(addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + rule fun_unpackfield__case_7{hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + rule fun_unpackfield__case_8{hostaddr : hostaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + rule fun_unpackfield__case_9{hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + rule fun_unpackfield__case_10{hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + rule fun_unpackfield__case_11{hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + rule fun_unpackfield__case_12{hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{hostaddr : hostaddr}(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr)) = REF.HOST_ADDR_val(hostaddr) + rule fun_unpackfield__case_13{hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), REF.HOST_ADDR_fieldval(hostaddr), ?(REF.HOST_ADDR_val(hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + rule fun_unpackfield__case_14{exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + rule fun_unpackfield__case_15{exnaddr : exnaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + rule fun_unpackfield__case_16{exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + rule fun_unpackfield__case_17{exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + rule fun_unpackfield__case_18{exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + rule fun_unpackfield__case_19{exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{exnaddr : exnaddr}(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr)) = REF.EXN_ADDR_val(exnaddr) + rule fun_unpackfield__case_20{exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), REF.EXN_ADDR_fieldval(exnaddr), ?(REF.EXN_ADDR_val(exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + rule fun_unpackfield__case_21{funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + rule fun_unpackfield__case_22{funcaddr : funcaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + rule fun_unpackfield__case_23{funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + rule fun_unpackfield__case_24{funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + rule fun_unpackfield__case_25{funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + rule fun_unpackfield__case_26{funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{funcaddr : funcaddr}(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr)) = REF.FUNC_ADDR_val(funcaddr) + rule fun_unpackfield__case_27{funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), REF.FUNC_ADDR_fieldval(funcaddr), ?(REF.FUNC_ADDR_val(funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + rule fun_unpackfield__case_28{arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + rule fun_unpackfield__case_29{arrayaddr : arrayaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + rule fun_unpackfield__case_30{arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + rule fun_unpackfield__case_31{arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + rule fun_unpackfield__case_32{arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + rule fun_unpackfield__case_33{arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{arrayaddr : arrayaddr}(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr)) = REF.ARRAY_ADDR_val(arrayaddr) + rule fun_unpackfield__case_34{arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), REF.ARRAY_ADDR_fieldval(arrayaddr), ?(REF.ARRAY_ADDR_val(arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + rule fun_unpackfield__case_35{structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + rule fun_unpackfield__case_36{structaddr : structaddr, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + rule fun_unpackfield__case_37{structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + rule fun_unpackfield__case_38{structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + rule fun_unpackfield__case_39{structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + rule fun_unpackfield__case_40{structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{structaddr : structaddr}(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr)) = REF.STRUCT_ADDR_val(structaddr) + rule fun_unpackfield__case_41{structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), REF.STRUCT_ADDR_fieldval(structaddr), ?(REF.STRUCT_ADDR_val(structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + rule fun_unpackfield__case_42{u31 : u31}: + `%%%%`(BOT_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + rule fun_unpackfield__case_43{u31 : u31, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + rule fun_unpackfield__case_44{u31 : u31}: + `%%%%`(V128_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + rule fun_unpackfield__case_45{u31 : u31}: + `%%%%`(F64_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + rule fun_unpackfield__case_46{u31 : u31}: + `%%%%`(F32_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + rule fun_unpackfield__case_47{u31 : u31}: + `%%%%`(I64_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{u31 : u31}(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31)) = REF.I31_NUM_val(u31) + rule fun_unpackfield__case_48{u31 : u31}: + `%%%%`(I32_storagetype, ?(), REF.I31_NUM_fieldval(u31), ?(REF.I31_NUM_val(u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + rule fun_unpackfield__case_49{heaptype_0 : heaptype}: + `%%%%`(BOT_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + rule fun_unpackfield__case_50{heaptype_0 : heaptype, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + rule fun_unpackfield__case_51{heaptype_0 : heaptype}: + `%%%%`(V128_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + rule fun_unpackfield__case_52{heaptype_0 : heaptype}: + `%%%%`(F64_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + rule fun_unpackfield__case_53{heaptype_0 : heaptype}: + `%%%%`(F32_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + rule fun_unpackfield__case_54{heaptype_0 : heaptype}: + `%%%%`(I64_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0)) = REF.NULL_val(heaptype_0) + rule fun_unpackfield__case_55{heaptype_0 : heaptype}: + `%%%%`(I32_storagetype, ?(), REF.NULL_fieldval(heaptype_0), ?(REF.NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + rule fun_unpackfield__case_56{vectype : vectype, vec_ : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + rule fun_unpackfield__case_57{vectype : vectype, vec_ : vec_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + rule fun_unpackfield__case_58{vectype : vectype, vec_ : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + rule fun_unpackfield__case_59{vectype : vectype, vec_ : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + rule fun_unpackfield__case_60{vectype : vectype, vec_ : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + rule fun_unpackfield__case_61{vectype : vectype, vec_ : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{vectype : vectype, vec_ : vec_}(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_)) = VCONST_val(vectype, vec_) + rule fun_unpackfield__case_62{vectype : vectype, vec_ : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(vectype, vec_), ?(VCONST_val(vectype, vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(BOT_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + rule fun_unpackfield__case_63{numtype : numtype, num_ : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + rule fun_unpackfield__case_64{numtype : numtype, num_ : num_, `null?` : null?, heaptype : heaptype}: + `%%%%`(REF_storagetype(null?{null <- `null?`}, heaptype), ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(V128_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + rule fun_unpackfield__case_65{numtype : numtype, num_ : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(F64_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + rule fun_unpackfield__case_66{numtype : numtype, num_ : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(F32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + rule fun_unpackfield__case_67{numtype : numtype, num_ : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(I64_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + rule fun_unpackfield__case_68{numtype : numtype, num_ : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{numtype : numtype, num_ : num_}(I32_storagetype, ?(), CONST_fieldval(numtype, num_)) = CONST_val(numtype, num_) + rule fun_unpackfield__case_69{numtype : numtype, num_ : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(numtype, num_), ?(CONST_val(numtype, num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{sx : sx, i : uN}(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))) + rule fun_unpackfield__case_70{sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(sx), PACK_fieldval(I8_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i))))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{sx : sx, i : uN}(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))) + rule fun_unpackfield__case_71{sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(sx), PACK_fieldval(I16_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i))))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_72{x0 : storagetype, x1 : sx?, x2 : fieldval}: + `%%%%`(x0, x1, x2, ?()) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 -def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 - def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 - def $tagsxa{a : nat, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 - def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tagaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_tagsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 -def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 - def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 - def $globalsxa{a : nat, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 - def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : globaladdr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_globalsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 -def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 - def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 - def $memsxa{a : nat, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 - def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : memaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_memsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 -def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 - def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 - def $tablesxa{a : nat, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 - def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_1{a : nat, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : tableaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_tablesxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 -def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 - def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 - def $funcsxa{a : nat, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 - def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_1{a : nat, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_2{externaddr : externaddr, `xa*` : externaddr*, var_0 : funcaddr*}: + `%%`([externaddr] ++ xa*{xa <- `xa*`}, var_0) + -- fun_funcsxa: `%%`(xa*{xa <- `xa*`}, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -12363,108 +14862,136 @@ def $local(state : state, localidx : localidx) : val? def $local{s : store, f : frame, x : uN}(`%;%`_state(s, f), x) = f.LOCALS_frame[$proj_uN_0(x).0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_local(state : state, localidx : localidx, val : val) : state +relation fun_with_local: `%%%%`(state, localidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + rule fun_with_local_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) -- wf_state: `%`(`%;%`_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_global(state : state, globalidx : globalidx, val : val) : state +relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{s : store, f : frame, x : uN, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + rule fun_with_global_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(`%;%`_state(s, f), x, v, `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.GLOBALS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + rule fun_with_table_case_0{s : store, f : frame, x : uN, i : nat, r : ref}: + `%%%%%`(`%;%`_state(s, f), x, i, r, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + rule fun_with_tableinst_case_0{s : store, f : frame, x : uN, ti : tableinst}: + `%%%%`(`%;%`_state(s, f), x, ti, `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(`%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + rule fun_with_mem_case_0{s : store, f : frame, x : uN, i : nat, j : nat, `b*` : byte*}: + `%%%%%%`(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + rule fun_with_meminst_case_0{s : store, f : frame, x : uN, mi : meminst}: + `%%%%`(`%;%`_state(s, f), x, mi, `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_elem(state : state, elemidx : elemidx, ref*) : state +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{s : store, f : frame, x : uN, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f) + rule fun_with_elem_case_0{s : store, f : frame, x : uN, `r*` : ref*}: + `%%%%`(`%;%`_state(s, f), x, r*{r <- `r*`}, `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.ELEMS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r*{r <- `r*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_data(state : state, dataidx : dataidx, byte*) : state +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{s : store, f : frame, x : uN, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f) + rule fun_with_data_case_0{s : store, f : frame, x : uN, `b*` : byte*}: + `%%%%`(`%;%`_state(s, f), x, b*{b <- `b*`}, `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.DATAS_moduleinst|) -- wf_state: `%`(`%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b*{b <- `b*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + rule fun_with_struct_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(`%;%`_state(s, f), a, i, fv, `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) -- wf_state: `%`(`%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + rule fun_with_array_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(`%;%`_state(s, f), a, i, fv, `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) -- wf_state: `%`(`%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_structinst(state : state, structinst*) : state +relation fun_add_structinst: `%%%`(state, structinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + rule fun_add_structinst_case_0{s : store, f : frame, `si*` : structinst*}: + `%%%`(`%;%`_state(s, f), si*{si <- `si*`}, `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) -- wf_state: `%`(`%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_arrayinst(state : state, arrayinst*) : state +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + rule fun_add_arrayinst_case_0{s : store, f : frame, `ai*` : arrayinst*}: + `%%%`(`%;%`_state(s, f), ai*{ai <- `ai*`}, `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) -- wf_state: `%`(`%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_exninst(state : state, exninst*) : state +relation fun_add_exninst: `%%%`(state, exninst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + rule fun_add_exninst_case_0{s : store, f : frame, `exn*` : exninst*}: + `%%%`(`%;%`_state(s, f), exn*{exn <- `exn*`}, `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) -- wf_state: `%`(`%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growtable{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}(tableinst, n, r) = ?(tableinst') + rule fun_growtable_case_0{tableinst : tableinst, n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : uN}: + `%%%%`(tableinst, n, r, ?(tableinst')) -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) + -- where {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}} = tableinst {at, i, j, `j?`, r', `r'*`, rt} -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if ($proj_uN_0(i').0 = (|r'*{r' <- `r'*`}| + n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growmem(meminst : meminst, nat : nat) : meminst? +relation fun_growmem: `%%%`(meminst, nat, meminst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growmem{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}(meminst, n) = ?(meminst') + rule fun_growmem_case_0{meminst : meminst, n : nat, meminst' : meminst, at : addrtype, i : uN, `j?` : u64?, `b*` : byte*, i' : uN}: + `%%%`(meminst, n, ?(meminst')) -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) + -- where {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}} = meminst {at, b, `b*`, i, j, `j?`} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- `j?`} - def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -12485,9 +15012,9 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- wf_store: `%`(s) @@ -12496,14 +15023,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.I31_NUM_ref(i)) -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) @@ -12512,7 +15039,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) @@ -12521,7 +15048,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) @@ -12530,7 +15057,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- wf_store: `%`(s) @@ -12540,14 +15067,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF.HOST_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, addrref : addrref}: `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) -- wf_store: `%`(s) @@ -12556,7 +15083,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(addrref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- wf_store: `%`(s) @@ -12595,9 +15122,9 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- wf_store: `%`(s) @@ -12605,7 +15132,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- wf_store: `%`(s) @@ -12613,7 +15140,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- wf_store: `%`(s) @@ -12621,7 +15148,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- wf_store: `%`(s) @@ -12629,7 +15156,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(funcinst.TYPE_funcinst))) -- wf_store: `%`(s) @@ -12637,7 +15164,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- wf_store: `%`(s) @@ -12649,77 +15176,44 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + rule fun_inst_valtype_case_0{moduleinst : moduleinst, t : valtype, `dt*` : deftype*, var_0 : valtype}: + `%%%`(moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + rule fun_inst_reftype_case_0{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*, var_0 : reftype}: + `%%%`(moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + rule fun_inst_globaltype_case_0{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*, var_0 : globaltype}: + `%%%`(moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + rule fun_inst_memtype_case_0{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*, var_0 : memtype}: + `%%%`(moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, $typeuse_deftype(dt)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(val) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_br_on_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null_0`{val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF.NULL_val(ht)) - -- if (val = REF.NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.is_null-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true_0`{ref : ref, ht : heaptype}: - `%`([$instr_ref(ref) REF.IS_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.as_non_null-addr`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null_0`{ref : ref, ht : heaptype}: - `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) - -- wf_ref: `%`(ref) - -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF.NULL_ref(ht)) - -- if (ref = REF.NULL_ref(ht)) + rule fun_inst_tabletype_case_0{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*, var_0 : tabletype}: + `%%%`(moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, $typeuse_deftype(dt)*{dt <- `dt*`}, var_0) + -- where dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst {dt, `dt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_pure_before_ref.eq-true`: `%`(instr*) @@ -12734,29 +15228,6 @@ relation `Step_pure_before_ref.eq-true`: `%`(instr*) -- wf_ref: `%`(REF.NULL_ref(ht_2)) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_pure_before_ref.eq-false`: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true_0`{ref_1 : ref, ref_2 : ref}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null_1`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF.EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- wf_ref: `%`(REF.NULL_ref(ht_1)) - -- wf_ref: `%`(REF.NULL_ref(ht_2)) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12883,11 +15354,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-addr`{val : val, l : labelidx}: + rule `br_on_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NULL_instr(l)], [$instr_val(val)]) + -- if (val =/= REF.NULL_val(ht)) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ `Step_pure_before_br_on_null-addr`: `%`([$instr_val(val) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: @@ -12898,12 +15369,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (val = REF.NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-addr`{val : val, l : labelidx}: + rule `br_on_non_null-addr`{val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(val) BR_ON_NON_NULL_instr(l)], [$instr_val(val) BR_instr(l)]) + -- if (val =/= REF.NULL_val(ht)) -- wf_val: `%`(val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- ~ `Step_pure_before_br_on_non_null-addr`: `%`([$instr_val(val) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: @@ -12993,12 +15464,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-false`{ref : ref}: + rule `ref.is_null-false`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref =/= REF.NULL_ref(ht)) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.IS_NULL_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.is_null-false`: `%`([$instr_ref(ref) REF.IS_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: @@ -13010,11 +15481,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (ref = REF.NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-addr`{ref : ref}: + rule `ref.as_non_null-addr`{ref : ref, ht : heaptype}: `%~>%`([$instr_ref(ref) REF.AS_NON_NULL_instr], [$instr_ref(ref)]) + -- if (ref =/= REF.NULL_ref(ht)) -- wf_ref: `%`(ref) -- wf_instr: `%`(REF.AS_NON_NULL_instr) - -- ~ `Step_pure_before_ref.as_non_null-addr`: `%`([$instr_ref(ref) REF.AS_NON_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: @@ -13028,23 +15499,24 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) - -- ~ `Step_pure_before_ref.eq-true`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF.NULL_ref(ht_1)) \/ (ref_2 =/= REF.NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF.EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) - -- ~ `Step_pure_before_ref.eq-false`: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF.EQ_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-null`{ht : heaptype, sx : sx}: @@ -13095,49 +15567,54 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(ANY.CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + rule `unop-val`{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$unop_(nt, unop, c_1)| > 0) - -- if (c <- $unop_(nt, unop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_}: + rule `unop-trap`{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(TRAP_instr) - -- if ($unop_(nt, unop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + rule `binop-val`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$binop_(nt, binop, c_1, c_2)| > 0) - -- if (c <- $binop_(nt, binop, c_1, c_2)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + rule `binop-trap`{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(TRAP_instr) - -- if ($binop_(nt, binop, c_1, c_2) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $testop_(nt, testop, c_1)) + -- if (!($proj_num__0(c)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: @@ -13150,21 +15627,23 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (!($proj_num__0(c)) = $relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + rule `cvtop-val`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) - -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + rule `cvtop-trap`{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(TRAP_instr) - -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, vvunop : vvunop, c : vec_}: @@ -13197,74 +15676,85 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvtestop{c_1 : vec_, c : num_}: + rule vvtestop{c_1 : vec_, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- fun_inez_: `%%%`($vsize(V128_vectype), c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- if (!($proj_num__0(c)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + rule `vunop-val`{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vunop_(sh, vunop, c_1)| > 0) - -- if (c <- $vunop_(sh, vunop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_}: + rule `vunop-trap`{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vunop_(sh, vunop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + rule `vbinop-val`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) - -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + rule `vbinop-trap`{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + rule `vternop-val`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) - -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + rule `vternop-trap`{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(TRAP_instr) - -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*}: + rule vtestop{c_1 : vec_, Jnn : Jnn, M : M, c : num_, `i*` : lane_*, `var_1*` : uN*, var_0 : nat}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (|`var_1*`| = |`i*`|) + -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} + -- (fun_inez_: `%%%`($jsizenn(Jnn), !($proj_lane__2(i)), var_1))*{var_1 <- `var_1*`, i <- `i*`} + -- fun_prod: `%%`($proj_uN_0(var_1).0*{var_1 <- `var_1*`}, var_0) -- (wf_lane_: `%%`($lanetype(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))), i))*{i <- `i*`} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), mk_vtestop__0_vtestop_(Jnn, M, ALL_TRUE_vtestop_Jnn_M))) @@ -13272,63 +15762,68 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M))) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c_1)) -- if ($proj_num__0(c) =/= ?()) - -- (if ($proj_lane__2(i) =/= ?()))*{i <- `i*`} - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(Jnn), !($proj_lane__2(i)))).0*{i <- `i*`})) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if ($proj_num__0(i) =/= ?()) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) - -- if (c = $vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- if (!($proj_num__0(c)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_}: + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, `i*` : laneidx*, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) + -- fun_vshufflop_: `%%%%%`(sh, i*{i <- `i*`}, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSHUFFLE_instr(sh, i*{i <- `i*`})) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_}: + rule vsplat{Lnn : Lnn, c_1 : num_, M : M, c : vec_, var_0 : lane_}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(Lnn, c_1, var_0) -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_1)) -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), var_0^M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_, nt : numtype, M : M, i : laneidx, c_2 : num_}: @@ -13354,92 +15849,103 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), `%`_dim(M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_}: + rule vreplace_lane{c_1 : vec_, Lnn : Lnn, c_2 : num_, M : M, i : laneidx, c : vec_, var_0 : lane_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(Lnn, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr($lunpack(Lnn), c_2)) -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(Lnn, `%`_dim(M))) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(Lnn, c_2)])) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[$proj_uN_0(i).0] = var_0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_}: + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, sx)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, sx, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -def $blocktype_(state : state, blocktype : blocktype) : instrtype +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) + rule fun_blocktype__case_0{z : state, x : uN, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%`(z, _IDX_blocktype(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + rule fun_blocktype__case_1{z : state, `t?` : valtype?}: + `%%%`(z, _RESULT_blocktype(t?{t <- `t?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_br_on_cast_fail-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast_fail-succeed_0`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_throw_ref-handler-next`: `%`(config) @@ -13489,23 +15995,6 @@ relation `Step_read_before_table.fill-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13535,41 +16024,6 @@ relation `Step_read_before_table.copy-le`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE.GET_instr(y)) - -- wf_instr: `%`(TABLE.SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_table.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13581,24 +16035,6 @@ relation `Step_read_before_table.init-zero`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_table.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.fill-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13609,23 +16045,6 @@ relation `Step_read_before_memory.fill-zero`: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-zero_0`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-oob_1`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13655,41 +16074,6 @@ relation `Step_read_before_memory.copy-le`: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.copy-gt`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le_0`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero_1`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-oob_2`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$mem(z, x_2).BYTES_meminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_memory.init-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13701,46 +16085,30 @@ relation `Step_read_before_memory.init-zero`: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_memory.init-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero_0`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob_1`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) > |$mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$data(z, y).BYTES_datainst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.test-false`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + rule `ref.test-true_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_ref.cast-fail`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + rule `ref.cast-succeed_0`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.fill-zero`: `%`(config) @@ -13753,24 +16121,6 @@ relation `Step_read_before_array.fill-zero`: `%`(config) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.fill-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero_0`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob_1`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.copy-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13839,7 +16189,8 @@ relation `Step_read_before_array.copy-gt`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if ($sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero_1`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -13885,32 +16236,6 @@ relation `Step_read_before_array.init_elem-zero`: `%`(config) -- if (a < |$arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation `Step_read_before_array.init_elem-succ`: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- if (n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) > |$elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: - `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation `Step_read_before_array.init_data-zero`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13921,7 +16246,8 @@ relation `Step_read_before_array.init_data-zero`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_0`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13949,7 +16275,8 @@ relation `Step_read_before_array.init_data-num`: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1_1`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -13963,30 +16290,33 @@ relation `Step_read_before_array.init_data-num`: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- fun_blocktype_: `%%%`(z, bt, var_0) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})])) -- wf_instr: `%`(`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: + rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- fun_blocktype_: `%%%`(z, bt, var_0) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})])) -- wf_instr: `%`(`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(ref) BR_instr(l)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -13995,13 +16325,14 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_br_on_cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -14027,18 +16358,20 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: + rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*, `var_0*` : val?*}: `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) + -- if (|`var_0*`| = |`t*`|) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- `var_0*`, t <- `t*`} -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- wf_frame: `%`({LOCALS ?(val)^n{val <- `val*`} ++ var_0*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) -- if (a < |$funcinst(z)|) -- if ($funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ var_0*{var_0 <- `var_0*`}, MODULE fi.MODULE_funcinst}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: @@ -14157,12 +16490,13 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_throw_ref-handler-next`: `%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*, var_0 : instrtype}: `%~>%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- fun_blocktype_: `%%%`(z, bt, var_0) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])) -- wf_instr: `%`(`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], $instr_val(val)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])) -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if (var_0 = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local.get{z : state, x : idx, val : val}: @@ -14213,21 +16547,23 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) - -- ~ `Step_read_before_table.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.FILL_instr(x)) - -- ~ `Step_read_before_table.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14239,17 +16575,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) > |$table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), []) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) - -- ~ `Step_read_before_table.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14259,14 +16599,16 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx}: + rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE.COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14276,7 +16618,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.COPY_instr(x, y)) - -- ~ `Step_read_before_table.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) TABLE.COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14290,8 +16631,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) - -- ~ `Step_read_before_table.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14300,6 +16643,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE.SET_instr(x)) @@ -14307,7 +16652,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE.INIT_instr(x, y)) - -- ~ `Step_read_before_table.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: @@ -14456,21 +16800,24 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) - -- ~ `Step_read_before_memory.fill-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) + rule `memory.fill-succ`{z : state, at : addrtype, i : num_, val : val, n : n, x : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.FILL_instr(x)) - -- ~ `Step_read_before_memory.fill-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: @@ -14484,42 +16831,49 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), []) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_memory.copy-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-le`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, `%`_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, `%`_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.COPY_instr(x_1, x_2)) - -- ~ `Step_read_before_memory.copy-gt`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', `%`_uN(n))) MEMORY.COPY_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14533,25 +16887,29 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) - -- ~ `Step_read_before_memory.init-zero`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) + rule `memory.init-succ`{z : state, at : addrtype, i : num_, j : num_, n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY.INIT_instr(x, y)]) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$data(z, y).BYTES_datainst|)) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN($proj_byte_0($data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY.INIT_instr(x, y)) - -- ~ `Step_read_before_memory.init-succ`: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.null-idx`{z : state, x : idx}: @@ -14567,14 +16925,15 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(1)))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: @@ -14584,13 +16943,14 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_ref.test-false`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)]), [$instr_ref(ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') -- wf_config: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: @@ -14600,15 +16960,19 @@ relation Step_read: `%~>%`(config, instr*) -- ~ `Step_read_before_ref.cast-fail`: `%`(`%;%`_config(`%;%`_state(s, f), [$instr_ref(ref) REF.CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : valtype*, `var_0*` : val?*}: `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), $instr_val(val)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) + -- if (|`var_1*`| = |`zt*`|) + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- `var_1*`, zt <- `zt*`} + -- if (|`var_1*`| = |`var_0*`|) + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- `var_1*`, var_0 <- `var_0*`} -- (wf_val: `%`(val))*{val <- `val*`} -- wf_config: `%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(STRUCT.NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + -- if (|`var_0*`| = |`val*`|) + -- (if (var_0 = ?(val)))*{var_0 <- `var_0*`, val <- `val*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: @@ -14617,24 +16981,28 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val($unpackfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))]) + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_0 : val?}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) -- if ($proj_uN_0(i).0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype, var_1 : valtype, var_0 : val?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)]), $instr_val(val)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) -- wf_val: `%`(val) -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($default_($unpack(zt)) = ?(val)) + -- if (var_0 = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_, n : n, x : idx, y : idx}: @@ -14661,19 +17029,23 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} + rule `array.new_data-num`{z : state, i : num_, n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_*, `mut?` : mut?, `var_1*` : lit_*, `var_0*` : instr*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)]), var_0^n{var_0 <- `var_0*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^n{var_1 <- `var_1*`, c <- `c*`} + -- (if ($cunpack(zt) =/= ?()))^n{var_1 <- `var_1*`} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^n{var_1 <- `var_1*`, var_0 <- `var_0*`} -- (wf_lit_: `%%`(zt, c))*{c <- `c*`} -- wf_config: `%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-null`{z : state, ht : heaptype, i : num_, `sx?` : sx?, x : idx}: @@ -14691,11 +17063,13 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))]) + rule `array.get-array`{z : state, a : addr, i : num_, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?, var_0 : val?}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -14731,14 +17105,19 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) - -- ~ `Step_read_before_array.fill-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_, val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (n =/= 0) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14746,7 +17125,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.FILL_instr(x)) - -- ~ `Step_read_before_array.fill-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_, ref : ref, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: @@ -14781,8 +17159,13 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), []) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) - -- ~ `Step_read_before_array.copy-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14790,6 +17173,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (n =/= 0) + -- if (a_2 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + n) <= |$arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (a_1 < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + n) <= |$arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14802,9 +17190,9 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.COPY_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- ~ `Step_read_before_array.copy-le`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- if ($sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx?{sx <- `sx?`} = !($sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: @@ -14825,7 +17213,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- ~ `Step_read_before_array.copy-gt`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + -- if ($sx(zt_2) =/= ?()) + -- if (sx?{sx <- `sx?`} = !($sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, ht : heaptype, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14853,8 +17242,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), []) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) - -- ~ `Step_read_before_array.init_elem-zero`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14862,6 +17255,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(ref) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if (n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + n) <= |$elem(z, y).REFS_eleminst|) + -- if (a < |$arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + n) <= |$arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(ref) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) @@ -14871,7 +17268,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_ELEM_instr(x, y)) - -- ~ `Step_read_before_array.init_elem-succ`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_ELEM_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) @@ -14898,7 +17294,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx}: @@ -14908,24 +17305,27 @@ relation Step_read: `%~>%`(config, instr*) -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) + rule `array.init_data-num`{z : state, a : addr, i : num_, j : num_, n : n, x : idx, y : idx, zt : storagetype, c : lit_, `mut?` : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) var_0 ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY.INIT_DATA_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF.ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(ARRAY.SET_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY.INIT_DATA_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- ~ `Step_read_before_array.init_data-num`: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) ARRAY.INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -14975,28 +17375,32 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 - rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config(var_0, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- fun_add_exninst: `%%%`(z, [exn], var_0) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [THROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if ($proj_uN_0(x).0 < |$tagaddr(z)|) -- wf_exninst: `%`({TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + -- if ($as_deftype($tag(z, x).TYPE_taginst) =/= ?()) + -- Expand: `%~~%`(!($as_deftype($tag(z, x).TYPE_taginst)), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) -- if (a = |$exninst(z)|) -- if (exn = {TAG $tagaddr(z)[$proj_uN_0(x).0], FIELDS val^n{val <- `val*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 - rule local.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + rule local.set{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, val, var_0) -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) LOCAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_local(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 - rule global.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + rule global.set{z : state, val : val, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, val, var_0) -- wf_config: `%`(`%;%`_config(z, [$instr_val(val) GLOBAL.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_global(z, x, val), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule `table.set-oob`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: @@ -15007,32 +17411,37 @@ relation Step: `%~>%`(config, config) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 - rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + rule `table.set-val`{z : state, at : addrtype, i : num_, ref : ref, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)]), `%;%`_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(ref) TABLE.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, ref), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 - rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($table(z, x), n, ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) - -- if (ti = !($growtable($table(z, x), n, ref))) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(|$table(z, x).REFS_tableinst|)))])) + -- if (var_1 =/= ?()) + -- if (ti = !(var_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 - rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) -- wf_config: `%`(`%;%`_config(z, [$instr_ref(ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) TABLE.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 - rule elem.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + rule elem.drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) -- wf_config: `%`(`%;%`_config(z, [ELEM.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_elem(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule `store-num-oob`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: @@ -15043,11 +17452,12 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 - rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `store-num-val`{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 @@ -15059,11 +17469,12 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `store-pack-val`{z : state, at : addrtype, i : num_, Inn : Inn, c : num_, n : n, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)]), `%;%`_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(Inn), c) STORE_instr($numtype_addrtype(Inn), ?(mk_storeop__0_storeop_(Inn, `%`_storeop_Inn(`%`_sz(n)))), x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_num__0(c) =/= ?()) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size($numtype_addrtype(Inn)), n, !($proj_num__0(c))))) @@ -15076,11 +17487,12 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 - rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `vstore-val`{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, `b*` : byte*, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 @@ -15092,11 +17504,12 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + N) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 - rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `vstore_lane-val`{z : state, at : addrtype, i : num_, c : vec_, N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)])) - -- wf_config: `%`(`%;%`_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)|) -- wf_uN: `%%`(N, `%`_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0)) @@ -15105,35 +17518,42 @@ relation Step: `%~>%`(config, config) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(Jnn), `%`_dim(M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 - rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($mem(z, x), n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($mem(z, x), n) =/= ?()) - -- if (mi = !($growmem($mem(z, x), n))) + -- wf_config: `%`(`%;%`_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (var_1 =/= ?()) + -- if (mi = !(var_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 - rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx, var_0 : nat}: + `%~>%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(n))) MEMORY.GROW_instr(x)])) - -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(`%;%`_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, `%`_uN(var_0)))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 - rule data.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + rule data.drop{z : state, x : idx, var_0 : state}: + `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) -- wf_config: `%`(`%;%`_config(z, [DATA.DROP_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_data(z, x, []), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 - rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config(var_0, [REF.STRUCT_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`, zt <- `zt*`} + -- fun_add_structinst: `%%%`(z, [si], var_0) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)])) - -- wf_config: `%`(`%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.STRUCT_ADDR_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- wf_structinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- (if (var_1 =/= ?()))^n{var_1 <- `var_1*`} + -- wf_structinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: @@ -15142,23 +17562,29 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(`%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)]), `%;%`_config(var_0, [])) -- if ($proj_uN_0(i).0 < |zt*{zt <- `zt*`}|) + -- fun_packfield_: `%%%`(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val, var_1) + -- if (var_1 =/= ?()) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, !(var_1), var_0) -- wf_config: `%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) $instr_val(val) STRUCT.SET_instr(x, i)])) - -- wf_config: `%`(`%;%`_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt*{zt <- `zt*`}[$proj_uN_0(i).0], val)), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 - rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype, `var_1*` : fieldval?*, var_0 : state}: + `%~>%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config(var_0, [REF.ARRAY_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, val, var_1))^n{var_1 <- `var_1*`, val <- `val*`} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) -- wf_config: `%`(`%;%`_config(z, $instr_val(val)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))])) - -- wf_config: `%`(`%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(`%;%`_config(var_0, [REF.ARRAY_ADDR_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}}) + -- (if (var_1 =/= ?()))^n{var_1 <- `var_1*`} + -- wf_arrayinst: `%`({TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}}) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS !(var_1)^n{var_1 <- `var_1*`}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule `array.set-null`{z : state, ht : heaptype, i : num_, val : val, x : idx}: @@ -15176,11 +17602,14 @@ relation Step: `%~>%`(config, config) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 - rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + rule `array.set-array`{z : state, a : addr, i : num_, val : val, x : idx, zt : storagetype, `mut?` : mut?, var_1 : fieldval?, var_0 : state}: + `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)]), `%;%`_config(var_0, [])) + -- fun_packfield_: `%%%`(zt, val, var_1) -- if ($proj_num__0(i) =/= ?()) + -- if (var_1 =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, !(var_1), var_0) -- wf_config: `%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(val) ARRAY.SET_instr(x)])) - -- wf_config: `%`(`%;%`_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, val)), [])) + -- wf_config: `%`(`%;%`_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -15217,23 +17646,30 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'*{type' <- `type'*`} ++ [type], deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}) + -- fun_rolldt: `%%%`(x, rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype')*{deftype' <- `deftype'*`}, var_1) + -- fun_alloctypes: `%%`(type'*{type' <- `type'*`}, var_0) -- wf_uN: `%%`(32, x) - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) - -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), $typeuse_deftype(deftype')*{deftype' <- `deftype'*`})) + -- where deftype'*{deftype' <- `deftype'*`} = var_0 {deftype', `deftype'*`} + -- where TYPE_type(rectype) = type {rectype} + -- if (deftype*{deftype <- `deftype*`} = var_1) -- if ($proj_uN_0(x).0 = |deftype'*{deftype' <- `deftype'*`}|) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, tagtype : typeuse, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + rule fun_alloctag_case_0{s : store, tagtype : typeuse, taginst : taginst}: + `%%%`(s, tagtype, (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) -- wf_store: `%`({TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE tagtype}) -- if (taginst = {TYPE tagtype}) @@ -15241,22 +17677,28 @@ def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, tagtype : typeuse, `tagtype'*` : tagtype*, s_2 : store, ja : nat, `ja'*` : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}, (s_2, [ja] ++ ja'*{ja' <- `ja'*`})) + -- fun_alloctags: `%%%`(s_1, tagtype'*{tagtype' <- `tagtype'*`}, var_1) + -- fun_alloctag: `%%%`(s, tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) + -- where (s_1, ja) = var_0 {ja, s_1} + -- where (s_2, ja'*{ja' <- `ja'*`}) = var_1 {ja', `ja'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + rule fun_allocglobal_case_0{s : store, globaltype : globaltype, val : val, globalinst : globalinst}: + `%%%%`(s, globaltype, val, (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE globaltype, VALUE val}) -- if (globalinst = {TYPE globaltype, VALUE val}) @@ -15264,22 +17706,28 @@ def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : nat, `ga'*` : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}, (s_2, [ga] ++ ga'*{ga' <- `ga'*`})) + -- fun_allocglobals: `%%%%`(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, globaltype, val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) + -- where (s_1, ga) = var_0 {ga, s_1} + -- where (s_2, ga'*{ga' <- `ga'*`}) = var_1 {ga', `ga'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) @@ -15287,22 +17735,28 @@ def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 - def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : nat, `ma'*` : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}, (s_2, [ma] ++ ma'*{ma' <- `ma'*`})) + -- fun_allocmems: `%%%`(s_1, memtype'*{memtype' <- `memtype'*`}, var_1) + -- fun_allocmem: `%%%`(s, memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) + -- where (s_1, ma) = var_0 {ma, s_1} + -- where (s_2, ma'*{ma' <- `ma'*`}) = var_1 {ma', `ma'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}: + `%%%%`(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^$proj_uN_0(i).0{}}) @@ -15310,22 +17764,28 @@ def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : nat, `ta'*` : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}, (s_2, [ta] ++ ta'*{ta' <- `ta'*`})) + -- fun_alloctables: `%%%%`(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}, var_1) + -- fun_alloctable: `%%%%`(s, tabletype, ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) + -- where (s_1, ta) = var_0 {s_1, ta} + -- where (s_2, ta'*{ta' <- `ta'*`}) = var_1 {s_2, ta', `ta'*`} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + rule fun_allocfunc_case_0{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}: + `%%%%%`(s, deftype, funccode, moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE deftype, MODULE moduleinst, CODE funccode}) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) @@ -15333,22 +17793,28 @@ def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : nat, `fa'*` : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}, (s_2, [fa] ++ fa'*{fa' <- `fa'*`})) + -- fun_allocfuncs: `%%%%%`(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, funccode, moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) + -- where (s_1, fa) = var_0 {fa, s_1} + -- where (s_2, fa'*{fa' <- `fa'*`}) = var_1 {fa', `fa'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + rule fun_allocdata_case_0{s : store, `byte*` : byte*, datainst : datainst}: + `%%%%`(s, OK_datatype, byte*{byte <- `byte*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte*{byte <- `byte*`}}) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) @@ -15356,22 +17822,28 @@ def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : nat, `da'*` : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}, (s_2, [da] ++ da'*{da' <- `da'*`})) + -- fun_allocdatas: `%%%%`(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}, var_1) + -- fun_allocdata: `%%%%`(s, ok, b*{b <- `b*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) + -- where (s_1, da) = var_0 {da, s_1} + -- where (s_2, da'*{da' <- `da'*`}) = var_1 {da', `da'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + rule fun_allocelem_case_0{s : store, elemtype : reftype, `ref*` : ref*, eleminst : eleminst}: + `%%%%`(s, elemtype, ref*{ref <- `ref*`}, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE elemtype, REFS ref*{ref <- `ref*`}}) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) @@ -15379,45 +17851,93 @@ def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : nat, `ea'*` : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}, (s_2, [ea] ++ ea'*{ea' <- `ea'*`})) + -- fun_allocelems: `%%%%`(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref*{ref <- `ref*`}, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) + -- where (s_1, ea) = var_0 {ea, s_1} + -- where (s_2, ea'*{ea' <- `ea'*`}) = var_1 {ea', `ea'*`, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_0{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TAG_externidx(x)), {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TAGS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_1{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, GLOBAL_externidx(x)), {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.GLOBALS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_2{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, MEM_externidx(x)), {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.MEMS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_3{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, TABLE_externidx(x)), {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.TABLES_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : uN}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_4{moduleinst : moduleinst, name : name, x : uN}: + `%%%`(moduleinst, EXPORT_export(name, FUNC_externidx(x)), {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |moduleinst.FUNCS_moduleinst|) -- wf_exportinst: `%`({NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + rule fun_allocexports_case_0{moduleinst : moduleinst, `export*` : export*, `var_0*` : exportinst*}: + `%%%`(moduleinst, export*{export <- `export*`}, var_0*{var_0 <- `var_0*`}) + -- if (|`var_0*`| = |`export*`|) + -- (fun_allocexport: `%%%`(moduleinst, export, var_0))*{var_0 <- `var_0*`, export <- `export*`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + rule fun_allocmodule_case_0{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), `var_16*` : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), `var_13*` : tabletype*, var_12 : (store, tableaddr*), `var_11*` : memtype*, var_10 : (store, memaddr*), `var_9*` : globaltype*, var_8 : (store, globaladdr*), `var_7*` : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: + `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, (s_7, moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`}, var_18) + -- (if ($proj_uN_0(x).0 < |dt*{dt <- `dt*`}|))*{x <- `x*`} + -- fun_allocfuncs: `%%%%%`(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}, var_17) + -- if (|`var_16*`| = |`elemtype*`|) + -- (fun_subst_all_reftype: `%%%`(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_16))*{var_16 <- `var_16*`, elemtype <- `elemtype*`} + -- fun_allocelems: `%%%%`(s_5, var_16*{var_16 <- `var_16*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}, var_14) + -- if (|`var_13*`| = |`tabletype*`|) + -- (fun_subst_all_tabletype: `%%%`(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_13))*{var_13 <- `var_13*`, tabletype <- `tabletype*`} + -- fun_alloctables: `%%%%`(s_3, var_13*{var_13 <- `var_13*`}, ref_T*{ref_T <- `ref_T*`}, var_12) + -- if (|`var_11*`| = |`memtype*`|) + -- (fun_subst_all_memtype: `%%%`(memtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_11))*{var_11 <- `var_11*`, memtype <- `memtype*`} + -- fun_allocmems: `%%%`(s_2, var_11*{var_11 <- `var_11*`}, var_10) + -- if (|`var_9*`| = |`globaltype*`|) + -- (fun_subst_all_globaltype: `%%%`(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_9))*{var_9 <- `var_9*`, globaltype <- `globaltype*`} + -- fun_allocglobals: `%%%%`(s_1, var_9*{var_9 <- `var_9*`}, val_G*{val_G <- `val_G*`}, var_8) + -- if (|`var_7*`| = |`tagtype*`|) + -- (fun_subst_all_tagtype: `%%%`(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`}, var_7))*{var_7 <- `var_7*`, tagtype <- `tagtype*`} + -- fun_alloctags: `%%%`(s, var_7*{var_7 <- `var_7*`}, var_6) + -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_5) + -- fun_funcsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_4) + -- fun_tablesxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_3) + -- fun_memsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_1) + -- fun_tagsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(moduleinst) -- wf_store: `%`(s_1) @@ -15428,59 +17948,74 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- wf_store: `%`(s_6) -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) -- (wf_tag: `%`(TAG_tag(tagtype)))*{tagtype <- `tagtype*`} + -- if (|`expr_G*`| = |`globaltype*`|) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} -- (wf_mem: `%`(MEMORY_mem(memtype)))*{memtype <- `memtype*`} + -- if (|`expr_T*`| = |`tabletype*`|) -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- if (|`expr_F*`| = |`local**`|) + -- if (|`expr_F*`| = |`x*`|) -- (wf_func: `%`(FUNC_func(x, local*{local <- `local*`}, expr_F)))*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} + -- if (|`byte**`| = |`datamode*`|) -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- if (|`elemmode*`| = |`elemtype*`|) + -- if (|`elemmode*`| = |`expr_E**`|) -- (wf_elem: `%`(ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where TAG_tag(tagtype)*{tagtype <- `tagtype*`} = tag*{tag <- `tag*`} {tagtype, `tagtype*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where MEMORY_mem(memtype)*{memtype <- `memtype*`} = mem*{mem <- `mem*`} {memtype, `memtype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`} = func*{func <- `func*`} {expr_F, `expr_F*`, local, `local*`, `local**`, x, `x*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, elemtype, `elemtype*`, expr_E, `expr_E*`, `expr_E**`} + -- where aa_I*{aa_I <- `aa_I*`} = var_0 {aa_I, `aa_I*`} + -- where ga_I*{ga_I <- `ga_I*`} = var_1 {ga_I, `ga_I*`} + -- where ma_I*{ma_I <- `ma_I*`} = var_2 {ma_I, `ma_I*`} + -- where ta_I*{ta_I <- `ta_I*`} = var_3 {ta_I, `ta_I*`} + -- where fa_I*{fa_I <- `fa_I*`} = var_4 {fa_I, `fa_I*`} + -- where dt*{dt <- `dt*`} = var_5 {dt, `dt*`} -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, $typeuse_deftype(dt)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, $typeuse_deftype(dt)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, $typeuse_deftype(dt)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[$proj_uN_0(x).0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) - -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) + -- where (s_1, aa*{aa <- `aa*`}) = var_6 {aa, `aa*`, s_1} + -- where (s_2, ga*{ga <- `ga*`}) = var_8 {ga, `ga*`, s_2} + -- where (s_3, ma*{ma <- `ma*`}) = var_10 {ma, `ma*`, s_3} + -- where (s_4, ta*{ta <- `ta*`}) = var_12 {s_4, ta, `ta*`} + -- where (s_5, da*{da <- `da*`}) = var_14 {da, `da*`, s_5} + -- where (s_6, ea*{ea <- `ea*`}) = var_15 {ea, `ea*`, s_6} + -- if ((s_7, fa*{fa <- `fa*`}) = var_17) + -- if (xi*{xi <- `xi*`} = var_18) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* +relation fun_rundata_: `%%%`(dataidx, data, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, `b*` : byte*, n : nat}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + rule fun_rundata__case_0{x : uN, `b*` : byte*, n : nat}: + `%%%`(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + rule fun_rundata__case_1{x : uN, `b*` : byte*, n : nat, y : uN, `instr*` : instr*}: + `%%%`(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(MEMORY.INIT_instr(y, x)) -- wf_instr: `%`(DATA.DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* +relation fun_runelem_: `%%%`(elemidx, elem, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + rule fun_runelem__case_0{x : uN, rt : reftype, `e*` : expr*, n : nat}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + rule fun_runelem__case_1{x : uN, rt : reftype, `e*` : expr*, n : nat}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode), [ELEM.DROP_instr(x)]) -- wf_instr: `%`(ELEM.DROP_instr(x)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + rule fun_runelem__case_2{x : uN, rt : reftype, `e*` : expr*, n : nat, y : uN, `instr*` : instr*}: + `%%%`(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`})), instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n))) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, `%`_uN(n)))) -- wf_instr: `%`(TABLE.INIT_instr(y, x)) @@ -15489,27 +18024,42 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, `gt'*` : globaltype*, expr : instr*, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}, (z', [val] ++ val'*{val' <- `val'*`})) + -- fun_evalglobals: `%%%%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}, var_1) + -- fun_allocglobal: `%%%%`(s, gt, val, var_0) -- wf_state: `%`(z') -- wf_val: `%`(val) -- (wf_val: `%`(val'))*{val' <- `val'*`} -- wf_state: `%`(`%;%`_state(s, f)) -- wf_state: `%`(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- where `%;%`_state(s, f) = z {f, s} + -- where (s', a) = var_0 {a, s'} + -- where (z', val'*{val' <- `val'*`}) = var_1 {val', `val'*`, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + rule fun_instantiate_case_0{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*, `var_6*` : instr**, `var_5*` : instr**, var_4 : (store, moduleinst), var_3 : (state, val*), var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: + `%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) + -- (if (i_E < |elem*{elem <- `elem*`}|))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} + -- (fun_runelem_: `%%%`(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E], var_6))^(i_E<|elem*{elem <- `elem*`}|){var_6 <- `var_6*`, i_E <- `i_E*`} + -- (if (i_D < |data*{data <- `data*`}|))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} + -- (fun_rundata_: `%%%`(`%`_dataidx(i_D), data*{data <- `data*`}[i_D], var_5))^(i_D<|data*{data <- `data*`}|){var_5 <- `var_5*`, i_D <- `i_D*`} + -- fun_allocmodule: `%%%%%%%`(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}, var_4) + -- fun_evalglobals: `%%%%`(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}, var_3) + -- fun_funcsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_2) + -- fun_globalsxa: `%%`(externaddr*{externaddr <- `externaddr*`}, var_1) + -- fun_alloctypes: `%%`(type*{type <- `type*`}, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G))*{val_G <- `val_G*`} @@ -15518,4233 +18068,52 @@ def $instantiate(store : store, module : module, externaddr*) : config -- wf_config: `%`(`%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))) -- wf_moduletype: `%`(`%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- wf_module: `%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- if (|`expr_G*`| = |`globaltype*`|) -- (wf_global: `%`(GLOBAL_global(globaltype, expr_G)))*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} + -- if (|`expr_T*`| = |`tabletype*`|) -- (wf_table: `%`(TABLE_table(tabletype, expr_T)))*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} + -- if (|`byte**`| = |`datamode*`|) -- (wf_data: `%`(DATA_data(byte*{byte <- `byte*`}, datamode)))*{`byte*` <- `byte**`, datamode <- `datamode*`} + -- if (|`elemmode*`| = |`expr_E**`|) + -- if (|`elemmode*`| = |`reftype*`|) -- (wf_elem: `%`(ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)))*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} -- (wf_start: `%`(START_start(x)))?{x <- `x?`} - -- wf_moduleinst: `%`({TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(`%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- (wf_uN: `%%`(32, `%`_uN(i_D)))^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`} -- (wf_uN: `%%`(32, `%`_uN(i_E)))^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`} -- (wf_instr: `%`(CALL_instr(x)))?{x <- `x?`} -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- if (|`externaddr*`| = |`xt_I*`|) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- where MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) = module {data, `data*`, elem, `elem*`, export, `export*`, func, `func*`, global, `global*`, import, `import*`, mem, `mem*`, start, `start?`, table, `table*`, tag, `tag*`, type, `type*`} + -- where GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`} = global*{global <- `global*`} {expr_G, `expr_G*`, globaltype, `globaltype*`} + -- where TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`} = table*{table <- `table*`} {expr_T, `expr_T*`, tabletype, `tabletype*`} + -- where DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`} = data*{data <- `data*`} {byte, `byte*`, `byte**`, datamode, `datamode*`} + -- where ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`} = elem*{elem <- `elem*`} {elemmode, `elemmode*`, expr_E, `expr_E*`, `expr_E**`, reftype, `reftype*`} + -- where START_start(x)?{x <- `x?`} = start?{start <- `start?`} {x, `x?`} + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- where (z', val_G*{val_G <- `val_G*`}) = var_3 {val_G, `val_G*`, z'} + -- if (|`expr_T*`| = |`ref_T*`|) -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} + -- if (|`expr_E**`| = |`ref_E**`|) + -- (if (|`expr_E*`| = |`ref_E*`|))*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) + -- where (s', moduleinst) = var_4 {moduleinst, s'} + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, var_5^(i_D<|data*{data <- `data*`}|){var_5 <- `var_5*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, var_6^(i_E<|elem*{elem <- `elem*`}|){var_6 <- `var_6*`})) + -- where instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`} {instr_S, `instr_S?`} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))]) + rule fun_invoke_case_0{s : store, funcaddr : nat, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%%%%`(s, funcaddr, val*{val <- `val*`}, `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) + -- if (funcaddr < |s.FUNCS_store|) -- wf_config: `%`(`%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(val)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[funcaddr].TYPE_funcinst))])) -- wf_comptype: `%`(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- if (|`t_1*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{n : n, i : sN} {{`%`_byte(n):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8($proj_name_0(name).0) = b*{b <- `b*`}) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- `x*`}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx(($proj_sN_0(i).0 : int <:> nat))) - -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u64(m):Bu64}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u64(m)}) - -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u64(m):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u64(m)}) - -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte($proj_uN_0(l).0):Bbyte => `%`_laneidx($proj_uN_0(l).0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx($proj_uN_0(l).0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) - -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) - -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} - -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) - -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) - -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) - -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) - -- if (|c*{c <- `c*`}| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) - -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) - -- if (n < (2 ^ N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) - -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(N) => `%`_iN($inv_signed_(N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(N, q) - -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) - -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} - -- if (|el*{el <- `el*`}| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`deftype?*` : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{I : idctxt, I' : idctxt}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- wf_idctxt: `%`(I) - -- (wf_name: `%`(`%`_name(field*{field <- `field*`})))*{`field*` <- `field**`} - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[$proj_uN_0(x).0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(I.FIELDS_I[$proj_uN_0(x).0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(I) => $valtype_reftype(rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => $storagetype_valtype(t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`fin?` : final?, `x*` : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin?{fin <- `fin?`}:Tfinal?{}} {x*{x <- `x*`}:Tlist(syntax typeidx, grammar Ttypeidx_(I))} {(ct, I'):Tcomptype_(I)} {")"}} => (SUB_subtype(fin?{fin <- `fin?`}, _IDX_typeuse(x)*{x <- `x*`}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) - -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[$proj_uN_0(x).0] = ?()]) - -- if (?(id) = I.LABELS_I[$proj_uN_0(x).0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) - -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, `%_%`_loadop_Inn(`%`_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, `%`_storeop_Inn(`%`_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(`%`_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, `st*` : subtype*, n : n, `i*` : nat*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`}))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e : expr, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, e' : expr, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -def $decl_data(data) : decl - def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) - -def $decl_elem(elem) : decl - def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) - -def $decl_export(export) : decl - def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) - -def $decl_func(func) : decl - def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) - -def $decl_global(global) : decl - def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) - -def $decl_import(import) : decl - def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) - -def $decl_mem(mem) : decl - def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) - -def $decl_start(start) : decl - def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) - -def $decl_table(table) : decl - def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) - -def $decl_tag(tag) : decl - def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) - -def $decl_type(type) : decl - def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{rectype : rectype}: - `%`(TYPE_decl(rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{name : name, externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(name, var_0, externtype)) - -- wf_name: `%`(name) - -- wf_externtype: `%`(externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{tagtype : tagtype}: - `%`(TAG_decl(tagtype)) - -- wf_typeuse: `%`(tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{globaltype : globaltype, expr : expr}: - `%`(GLOBAL_decl(globaltype, expr)) - -- wf_globaltype: `%`(globaltype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{memtype : memtype}: - `%`(MEMORY_decl(memtype)) - -- wf_memtype: `%`(memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{tabletype : tabletype, expr : expr}: - `%`(TABLE_decl(tabletype, expr)) - -- wf_tabletype: `%`(tabletype) - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{typeidx : typeidx, `local*` : local*, expr : expr}: - `%`(FUNC_decl(typeidx, local*{local <- `local*`}, expr)) - -- wf_uN: `%%`(32, typeidx) - -- (wf_local: `%`(local))*{local <- `local*`} - -- (wf_instr: `%`(expr))*{expr <- expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{`byte*` : byte*, datamode : datamode}: - `%`(DATA_decl(byte*{byte <- `byte*`}, datamode)) - -- (wf_byte: `%`(byte))*{byte <- `byte*`} - -- wf_datamode: `%`(datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{reftype : reftype, `expr*` : expr*, elemmode : elemmode}: - `%`(ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)) - -- wf_reftype: `%`(reftype) - -- (wf_instr: `%`(expr))*{expr <- expr}*{expr <- `expr*`} - -- wf_elemmode: `%`(elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{funcidx : funcidx}: - `%`(START_decl(funcidx)) - -- wf_uN: `%%`(32, funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{name : name, externidx : externidx}: - `%`(EXPORT_decl(name, externidx)) - -- wf_name: `%`(name) - -- wf_externidx: `%`(externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{rectype : rectype, `decl'*` : decl*}([TYPE_decl(rectype)] ++ decl'*{decl' <- `decl'*`}) = [TYPE_type(rectype)] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{name : name, var_0 : name, externtype : externtype, `decl'*` : decl*}([IMPORT_decl(name, var_0, externtype)] ++ decl'*{decl' <- `decl'*`}) = [IMPORT_import(name, var_0, externtype)] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{tagtype : tagtype, `decl'*` : decl*}([TAG_decl(tagtype)] ++ decl'*{decl' <- `decl'*`}) = [TAG_tag(tagtype)] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{globaltype : globaltype, expr : expr, `decl'*` : decl*}([GLOBAL_decl(globaltype, expr)] ++ decl'*{decl' <- `decl'*`}) = [GLOBAL_global(globaltype, expr)] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{memtype : memtype, `decl'*` : decl*}([MEMORY_decl(memtype)] ++ decl'*{decl' <- `decl'*`}) = [MEMORY_mem(memtype)] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{tabletype : tabletype, expr : expr, `decl'*` : decl*}([TABLE_decl(tabletype, expr)] ++ decl'*{decl' <- `decl'*`}) = [TABLE_table(tabletype, expr)] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{typeidx : typeidx, `local*` : local*, expr : expr, `decl'*` : decl*}([FUNC_decl(typeidx, local*{local <- `local*`}, expr)] ++ decl'*{decl' <- `decl'*`}) = [FUNC_func(typeidx, local*{local <- `local*`}, expr)] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{`byte*` : byte*, datamode : datamode, `decl'*` : decl*}([DATA_decl(byte*{byte <- `byte*`}, datamode)] ++ decl'*{decl' <- `decl'*`}) = [DATA_data(byte*{byte <- `byte*`}, datamode)] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{reftype : reftype, `expr*` : expr*, elemmode : elemmode, `decl'*` : decl*}([ELEM_decl(reftype, expr*{expr <- `expr*`}, elemmode)] ++ decl'*{decl' <- `decl'*`}) = [ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{funcidx : funcidx, `decl'*` : decl*}([START_decl(funcidx)] ++ decl'*{decl' <- `decl'*`}) = [START_start(funcidx)] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{name : name, externidx : externidx, `decl'*` : decl*}([EXPORT_decl(name, externidx)] ++ decl'*{decl' <- `decl'*`}) = [EXPORT_export(name, externidx)] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{name : name, var_0 : name, externtype : externtype, `decl_1*` : decl*, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [IMPORT_decl(name, var_0, externtype)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => ($decl_type(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => ($decl_import(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => ($decl_tag(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => ($decl_global(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => ($decl_mem(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => ($decl_table(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => ($decl_func(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => ($decl_data(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => ($decl_elem(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => ($decl_start(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => ($decl_export(``.0), ``.1) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL.GET_instr(x)) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- wf_globaltype: `%`(`%%`_globaltype(?(mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) - -- wf_instrtype: `%`(`%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{n : n, `instr*` : instr*}: - `%`(`LABEL_%{%}`_label(n, instr*{instr <- `instr*`})) - -- (wf_instr: `%`(instr))*{instr <- `instr*`} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{n : n, frame : frame}: - `%`(`FRAME_%{%}`_callframe(n, frame)) - -- wf_frame: `%`(frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : nat, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(`%`_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/specification.exp/11-improve-ids.il b/spectec/test-middlend/specification.exp/14-improve-ids.il similarity index 55% rename from spectec/test-middlend/specification.exp/11-improve-ids.il rename to spectec/test-middlend/specification.exp/14-improve-ids.il index 2cedcac5bc..9c9b4aca30 100644 --- a/spectec/test-middlend/specification.exp/11-improve-ids.il +++ b/spectec/test-middlend/specification.exp/14-improve-ids.il @@ -22,31 +22,40 @@ def $min(nat : nat, nat_0 : nat) : nat ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 -def $sum(var_0 : nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 - def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 - def $sum{v_n : nat, n'_lst : n*}([v_n] ++ n'_lst) = (v_n + $sum(n'_lst)) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 +relation fun_sum: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_0: + `%%`([], 0) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.6-9.10 + rule fun_sum_case_1{v_n : nat, n'_lst : n*, var_0 : nat}: + `%%`([v_n] ++ n'_lst, (v_n + var_0)) + -- fun_sum: `%%`(n'_lst, var_0) } ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 -def $prod(var_0 : nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 - def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 - def $prod{v_n : nat, n'_lst : n*}([v_n] ++ n'_lst) = (v_n * $prod(n'_lst)) +;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 +relation fun_prod: `%%`(nat*, nat) + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_0: + `%%`([], 1) + + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.6-13.11 + rule fun_prod_case_1{v_n : nat, n'_lst : n*, var_0 : nat}: + `%%`([v_n] ++ n'_lst, (v_n * var_0)) + -- fun_prod: `%%`(n'_lst, var_0) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec -def $opt_(syntax X, var_0 : X*) : X? +def $opt_(syntax X, var_0 : X*) : X?? ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() + def $opt_{syntax X}(syntax X, []) = ?(?()) ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(?(w)) + def $opt_{syntax X, x1 : X*}(syntax X, x1) = ?() ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec rec { @@ -199,11 +208,6 @@ relation wf_uN: `%%`(N, uN) syntax sN = | mk_sN{i : int}(i : int) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_sN_0(x : sN) : (int) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_sN_0{v_num_0 : int}(mk_sN_sN(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_sN: `%%`(N, sN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -242,28 +246,30 @@ syntax i64 = iN syntax i128 = iN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $signif(v_N : N) : nat +def $signif(v_N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 + def $signif(32) = ?(23) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 + def $signif(64) = ?(52) + def $signif{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $expon(v_N : N) : nat +def $expon(v_N : N) : nat? ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 + def $expon(32) = ?(8) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 + def $expon(64) = ?(11) + def $expon{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fun_M(v_N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fun_M{v_N : nat}(v_N) = $signif(v_N) + def $fun_M{v_N : nat}(v_N) = !($signif(v_N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $E(v_N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{v_N : nat}(v_N) = $expon(v_N) + def $E{v_N : nat}(v_N) = !($expon(v_N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax exp = int @@ -320,27 +326,30 @@ syntax f32 = fN syntax f64 = fN ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fzero(v_N : N) : fN +relation fun_fzero: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{v_N : nat}(v_N) = POS_fN(SUBNORM_fNmag(0)) + rule fun_fzero_case_0{v_N : nat}: + `%%`(v_N, POS_fN(SUBNORM_fNmag(0))) -- wf_fN: `%%`(v_N, POS_fN(SUBNORM_fNmag(0))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fnat(v_N : N, nat : nat) : fN +relation fun_fnat: `%%%`(N, nat, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fnat{v_N : nat, v_n : nat}(v_N, v_n) = POS_fN(NORM_fNmag(v_n, (0 : nat <:> int))) + rule fun_fnat_case_0{v_N : nat, v_n : nat}: + `%%%`(v_N, v_n, POS_fN(NORM_fNmag(v_n, (0 : nat <:> int)))) -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(v_n, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $fone(v_N : N) : fN +relation fun_fone: `%%`(N, fN) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{v_N : nat}(v_N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) + rule fun_fone_case_0{v_N : nat}: + `%%`(v_N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) -- wf_fN: `%%`(v_N, POS_fN(NORM_fNmag(1, (0 : nat <:> int)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(v_N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{v_N : nat}(v_N) = (2 ^ ((($signif(v_N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + def $canon_{v_N : nat}(v_N) = (2 ^ (((!($signif(v_N)) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax vN = uN @@ -362,11 +371,6 @@ def $proj_list_0(syntax X, x : list(syntax X)) : (X*) syntax char = | mk_char{i : nat}(i : nat) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_char_0(x : char) : (nat) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_char_0{v_num_0 : nat}(mk_char_char(v_num_0)) = (v_num_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_char: `%`(char) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -374,57 +378,13 @@ relation wf_char: `%`(char) `%`(mk_char_char(i)) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -def $cont(v_byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte}(b) = ((($proj_byte_0(b).0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < $proj_byte_0(b).0) /\ ($proj_byte_0(b).0 < 192)) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(var_0 : char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 - def $utf8{ch_lst : char*}(ch_lst) = $concat_(syntax byte, $utf8([ch])*{ch <- ch_lst}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- wf_byte: `%`(b) - -- wf_byte: `%`(mk_byte_byte($proj_char_0(ch).0)) - -- if ($proj_char_0(ch).0 < 128) - -- if (mk_byte_byte($proj_char_0(ch).0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- if ((128 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 2048)) - -- if ($proj_char_0(ch).0 = (((2 ^ 6) * ((($proj_byte_0(b_1).0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- if (((2048 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 55296)) \/ ((57344 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 65536))) - -- if ($proj_char_0(ch).0 = ((((2 ^ 12) * ((($proj_byte_0(b_1).0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] - -- wf_byte: `%`(b_1) - -- wf_byte: `%`(b_2) - -- wf_byte: `%`(b_3) - -- wf_byte: `%`(b_4) - -- if ((65536 <= $proj_char_0(ch).0) /\ ($proj_char_0(ch).0 < 69632)) - -- if ($proj_char_0(ch).0 = (((((2 ^ 18) * ((($proj_byte_0(b_1).0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) -} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = | mk_name{char_lst : char*}(char_lst : char*) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $proj_name_0(x : name) : (char*) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $proj_name_0{v_char_list_0 : char*}(mk_name_name(v_char_list_0)) = (v_char_list_0) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec relation wf_name: `%`(name) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -510,66 +470,101 @@ relation wf_externidx: `%`(externidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 -def $funcsxx(var_0 : externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 - def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 - def $funcsxx{x : uN, xx_lst : externidx*}([FUNC_externidx(x)] ++ xx_lst) = [x] ++ $funcsxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 - def $funcsxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $funcsxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 +relation fun_funcsxx: `%%`(externidx*, typeidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_1{x : uN, xx_lst : externidx*, var_0 : typeidx*}: + `%%`([FUNC_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_funcsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.6-129.14 + rule fun_funcsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : typeidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_funcsxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 -def $globalsxx(var_0 : externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 - def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 - def $globalsxx{x : uN, xx_lst : externidx*}([GLOBAL_externidx(x)] ++ xx_lst) = [x] ++ $globalsxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 - def $globalsxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $globalsxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 +relation fun_globalsxx: `%%`(externidx*, globalidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_1{x : uN, xx_lst : externidx*, var_0 : globalidx*}: + `%%`([GLOBAL_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_globalsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.6-130.16 + rule fun_globalsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : globalidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_globalsxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 -def $tablesxx(var_0 : externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 - def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 - def $tablesxx{x : uN, xx_lst : externidx*}([TABLE_externidx(x)] ++ xx_lst) = [x] ++ $tablesxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 - def $tablesxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $tablesxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 +relation fun_tablesxx: `%%`(externidx*, tableidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_1{x : uN, xx_lst : externidx*, var_0 : tableidx*}: + `%%`([TABLE_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_tablesxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.6-131.15 + rule fun_tablesxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : tableidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_tablesxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 -def $memsxx(var_0 : externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 - def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 - def $memsxx{x : uN, xx_lst : externidx*}([MEM_externidx(x)] ++ xx_lst) = [x] ++ $memsxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 - def $memsxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $memsxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 +relation fun_memsxx: `%%`(externidx*, memidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_1{x : uN, xx_lst : externidx*, var_0 : memidx*}: + `%%`([MEM_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_memsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.6-132.13 + rule fun_memsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : memidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_memsxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 -def $tagsxx(var_0 : externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 - def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 - def $tagsxx{x : uN, xx_lst : externidx*}([TAG_externidx(x)] ++ xx_lst) = [x] ++ $tagsxx(xx_lst) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 - def $tagsxx{v_externidx : externidx, xx_lst : externidx*}([v_externidx] ++ xx_lst) = $tagsxx(xx_lst) +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 +relation fun_tagsxx: `%%`(externidx*, tagidx*) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_1{x : uN, xx_lst : externidx*, var_0 : tagidx*}: + `%%`([TAG_externidx(x)] ++ xx_lst, [x] ++ var_0) + -- fun_tagsxx: `%%`(xx_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.6-133.13 + rule fun_tagsxx_case_2{v_externidx : externidx, xx_lst : externidx*, var_0 : tagidx*}: + `%%`([v_externidx] ++ xx_lst, var_0) + -- fun_tagsxx: `%%`(xx_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -602,89 +597,121 @@ relation wf_free: `%`(free) -- (wf_uN: `%%`(32, var_8))*{var_8 <- var_8} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_opt(var_0 : free?) : free +relation fun_free_opt: `%%`(free?, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_opt_case_0: + `%%`(?(), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{v_free : free}(?(v_free)) = v_free + rule fun_free_opt_case_1{v_free : free}: + `%%`(?(v_free), v_free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.1-172.29 -def $free_list(var_0 : free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:177.1-177.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 +relation fun_free_list: `%%`(free*, free) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 + rule fun_free_list_case_0: + `%%`([], {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.57 - def $free_list{v_free : free, free'_lst : free*}([v_free] ++ free'_lst) = v_free +++ $free_list(free'_lst) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:172.6-172.16 + rule fun_free_list_case_1{v_free : free, free'_lst : free*, var_0 : free}: + `%%`([v_free] ++ free'_lst, v_free +++ var_0) + -- fun_free_list: `%%`(free'_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_typeidx(v_typeidx : typeidx) : free +relation fun_free_typeidx: `%%`(typeidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{v_typeidx : uN}(v_typeidx) = {TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_typeidx_case_0{v_typeidx : uN}: + `%%`(v_typeidx, {TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [v_typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_funcidx(v_funcidx : funcidx) : free +relation fun_free_funcidx: `%%`(funcidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{v_funcidx : uN}(v_funcidx) = {TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_funcidx_case_0{v_funcidx : uN}: + `%%`(v_funcidx, {TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [v_funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_globalidx(v_globalidx : globalidx) : free +relation fun_free_globalidx: `%%`(globalidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{v_globalidx : uN}(v_globalidx) = {TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_globalidx_case_0{v_globalidx : uN}: + `%%`(v_globalidx, {TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [v_globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_tableidx(v_tableidx : tableidx) : free +relation fun_free_tableidx: `%%`(tableidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{v_tableidx : uN}(v_tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_tableidx_case_0{v_tableidx : uN}: + `%%`(v_tableidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [v_tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_memidx(v_memidx : memidx) : free +relation fun_free_memidx: `%%`(memidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{v_memidx : uN}(v_memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_memidx_case_0{v_memidx : uN}: + `%%`(v_memidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [v_memidx], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_elemidx(v_elemidx : elemidx) : free +relation fun_free_elemidx: `%%`(elemidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{v_elemidx : uN}(v_elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemidx_case_0{v_elemidx : uN}: + `%%`(v_elemidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [v_elemidx], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_dataidx(v_dataidx : dataidx) : free +relation fun_free_dataidx: `%%`(dataidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{v_dataidx : uN}(v_dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS []} + rule fun_free_dataidx_case_0{v_dataidx : uN}: + `%%`(v_dataidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [v_dataidx], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_localidx(v_localidx : localidx) : free +relation fun_free_localidx: `%%`(localidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{v_localidx : uN}(v_localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS []} + rule fun_free_localidx_case_0{v_localidx : uN}: + `%%`(v_localidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [v_localidx], LABELS []}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_labelidx(v_labelidx : labelidx) : free +relation fun_free_labelidx: `%%`(labelidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{v_labelidx : uN}(v_labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx]} + rule fun_free_labelidx_case_0{v_labelidx : uN}: + `%%`(v_labelidx, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx]}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [v_labelidx]}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -def $free_externidx(v_externidx : externidx) : free +relation fun_free_externidx: `%%`(externidx, free) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_funcidx : uN}(FUNC_externidx(v_funcidx)) = $free_funcidx(v_funcidx) + rule fun_free_externidx_case_0{v_funcidx : uN, var_0 : free}: + `%%`(FUNC_externidx(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + rule fun_free_externidx_case_1{v_globalidx : uN, var_0 : free}: + `%%`(GLOBAL_externidx(v_globalidx), var_0) + -- fun_free_globalidx: `%%`(v_globalidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_globalidx : uN}(GLOBAL_externidx(v_globalidx)) = $free_globalidx(v_globalidx) + rule fun_free_externidx_case_2{v_tableidx : uN, var_0 : free}: + `%%`(TABLE_externidx(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_tableidx : uN}(TABLE_externidx(v_tableidx)) = $free_tableidx(v_tableidx) + rule fun_free_externidx_case_3{v_memidx : uN, var_0 : free}: + `%%`(MEM_externidx(v_memidx), var_0) + -- fun_free_memidx: `%%`(v_memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{v_memidx : uN}(MEM_externidx(v_memidx)) = $free_memidx(v_memidx) + rule fun_free_externidx_case_4{v_tagidx : uN}: + `%%`(TAG_externidx(v_tagidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -1135,75 +1162,87 @@ syntax Cnn = | V128 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ANYREF : reftype +relation fun_ANYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) + rule fun_ANYREF_case_0: + `%`(REF_reftype(?(NULL_null), ANY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ANY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EQREF : reftype +relation fun_EQREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) + rule fun_EQREF_case_0: + `%`(REF_reftype(?(NULL_null), EQ_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EQ_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $I31REF : reftype +relation fun_I31REF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) + rule fun_I31REF_case_0: + `%`(REF_reftype(?(NULL_null), I31_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), I31_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $STRUCTREF : reftype +relation fun_STRUCTREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) + rule fun_STRUCTREF_case_0: + `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), STRUCT_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $ARRAYREF : reftype +relation fun_ARRAYREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) + rule fun_ARRAYREF_case_0: + `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), ARRAY_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FUNCREF : reftype +relation fun_FUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) + rule fun_FUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), FUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXNREF : reftype +relation fun_EXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) + rule fun_EXNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $EXTERNREF : reftype +relation fun_EXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) + rule fun_EXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), EXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLREF : reftype +relation fun_NULLREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) + rule fun_NULLREF_case_0: + `%`(REF_reftype(?(NULL_null), NONE_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NONE_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLFUNCREF : reftype +relation fun_NULLFUNCREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) + rule fun_NULLFUNCREF_case_0: + `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOFUNC_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXNREF : reftype +relation fun_NULLEXNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) + rule fun_NULLEXNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $NULLEXTERNREF : reftype +relation fun_NULLEXTERNREF: `%`(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) + rule fun_NULLEXTERNREF_case_0: + `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) -- wf_reftype: `%`(REF_reftype(?(NULL_null), NOEXTERN_heaptype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1369,29 +1408,32 @@ relation wf_moduletype: `%`(moduletype) -- (wf_externtype: `%`(var_0))*{var_0 <- var_0} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $IN(v_N : N) : Inn +def $IN(v_N : N) : Inn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = I32_Inn + def $IN(32) = ?(I32_Inn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn + def $IN(64) = ?(I64_Inn) + def $IN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $FN(v_N : N) : Fnn +def $FN(v_N : N) : Fnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = F32_Fnn + def $FN(32) = ?(F32_Fnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn + def $FN(64) = ?(F64_Fnn) + def $FN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $JN(v_N : N) : Jnn +def $JN(v_N : N) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = I8_Jnn + def $JN(8) = ?(I8_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = I16_Jnn + def $JN(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = I32_Jnn + def $JN(32) = ?(I32_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = I64_Jnn + def $JN(64) = ?(I64_Jnn) + def $JN{x0 : N}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $size(v_numtype : numtype) : nat @@ -1432,21 +1474,22 @@ def $lsize(v_lanetype : lanetype) : nat def $lsize(I16_lanetype) = $psize(I16_packtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $zsize(v_storagetype : storagetype) : nat +def $zsize(v_storagetype : storagetype) : nat? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I32_storagetype) = $size(I32_numtype) + def $zsize(I32_storagetype) = ?($size(I32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I64_storagetype) = $size(I64_numtype) + def $zsize(I64_storagetype) = ?($size(I64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F32_storagetype) = $size(F32_numtype) + def $zsize(F32_storagetype) = ?($size(F32_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(F64_storagetype) = $size(F64_numtype) + def $zsize(F64_storagetype) = ?($size(F64_numtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(V128_storagetype) = $vsize(V128_vectype) + def $zsize(V128_storagetype) = ?($vsize(V128_vectype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I8_storagetype) = $psize(I8_packtype) + def $zsize(I8_storagetype) = ?($psize(I8_packtype)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize(I16_storagetype) = $psize(I16_packtype) + def $zsize(I16_storagetype) = ?($psize(I16_packtype)) + def $zsize{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $isize(v_Inn : Inn) : nat @@ -1478,7 +1521,9 @@ def $inv_jsize(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{v_n : nat}(v_n) = ?($Jnn_addrtype(!($inv_isize(v_n)))) + def $inv_jsize(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(64) = ?(I64_Jnn) def $inv_jsize{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1537,7 +1582,13 @@ def $jsizenn(v_Jnn : Jnn) : nat ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{v_n : nat}(v_n) = ?(!($inv_jsize(v_n))) + def $inv_jsizenn(8) = ?(I8_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(16) = ?(I16_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(32) = ?(I32_Jnn) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn(64) = ?(I64_Jnn) def $inv_jsizenn{x0 : nat}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1556,26 +1607,43 @@ def $lunpack(v_lanetype : lanetype) : numtype def $lunpack(I16_lanetype) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $unpack(v_storagetype : storagetype) : valtype +relation fun_unpack: `%%`(storagetype, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(BOT_storagetype) = BOT_valtype + rule fun_unpack_case_0: + `%%`(BOT_storagetype, BOT_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype)) = REF_valtype(null_opt, v_heaptype) + rule fun_unpack_case_1{null_opt : null?, v_heaptype : heaptype}: + `%%`(REF_storagetype(null_opt, v_heaptype), REF_valtype(null_opt, v_heaptype)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(V128_storagetype) = V128_valtype + rule fun_unpack_case_2: + `%%`(V128_storagetype, V128_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(F64_storagetype) = F64_valtype + rule fun_unpack_case_3: + `%%`(F64_storagetype, F64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(F32_storagetype) = F32_valtype + rule fun_unpack_case_4: + `%%`(F32_storagetype, F32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I64_storagetype) = I64_valtype + rule fun_unpack_case_5: + `%%`(I64_storagetype, I64_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I32_storagetype) = I32_valtype + rule fun_unpack_case_6: + `%%`(I32_storagetype, I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I8_storagetype) = I32_valtype + rule fun_unpack_case_7: + `%%`(I8_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack(I16_storagetype) = I32_valtype + rule fun_unpack_case_8: + `%%`(I16_storagetype, I32_valtype) -- wf_valtype: `%`(I32_valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1636,110 +1704,168 @@ def $minat(v_addrtype : addrtype, v_addrtype_0 : addrtype) : addrtype def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = (if ($size($numtype_addrtype(at_1)) <= $size($numtype_addrtype(at_2))) then at_1 else at_2) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $diffrt(v_reftype : reftype, v_reftype_0 : reftype) : reftype +relation fun_diffrt: `%%%`(reftype, reftype, reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) + rule fun_diffrt_case_0{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1_opt, ht_1), REF_reftype(?(NULL_null), ht_2), REF_reftype(?(), ht_1)) -- wf_reftype: `%`(REF_reftype(?(), ht_1)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1_opt, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1_opt, ht_1) + rule fun_diffrt_case_1{null_1_opt : null?, ht_1 : heaptype, ht_2 : heaptype}: + `%%%`(REF_reftype(null_1_opt, ht_1), REF_reftype(?(), ht_2), REF_reftype(null_1_opt, ht_1)) -- wf_reftype: `%`(REF_reftype(null_1_opt, ht_1)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $as_deftype(v_typeuse : typeuse) : deftype +def $as_deftype(v_typeuse : typeuse) : deftype? ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{v_rectype : rectype, v_n : n}(_DEF_typeuse(v_rectype, v_n)) = _DEF_deftype(v_rectype, v_n) + def $as_deftype{v_rectype : rectype, v_n : n}(_DEF_typeuse(v_rectype, v_n)) = ?(_DEF_deftype(v_rectype, v_n)) + def $as_deftype{x0 : typeuse}(x0) = ?() ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 -def $tagsxt(var_0 : externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 - def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 - def $tagsxt{jt : typeuse, xt_lst : externtype*}([TAG_externtype(jt)] ++ xt_lst) = [jt] ++ $tagsxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 - def $tagsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $tagsxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 +relation fun_tagsxt: `%%`(externtype*, tagtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_1{jt : typeuse, xt_lst : externtype*, var_0 : tagtype*}: + `%%`([TAG_externtype(jt)] ++ xt_lst, [jt] ++ var_0) + -- fun_tagsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.6-312.13 + rule fun_tagsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : tagtype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_tagsxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 -def $globalsxt(var_0 : externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 - def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 - def $globalsxt{gt : globaltype, xt_lst : externtype*}([GLOBAL_externtype(gt)] ++ xt_lst) = [gt] ++ $globalsxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 - def $globalsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $globalsxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 +relation fun_globalsxt: `%%`(externtype*, globaltype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_1{gt : globaltype, xt_lst : externtype*, var_0 : globaltype*}: + `%%`([GLOBAL_externtype(gt)] ++ xt_lst, [gt] ++ var_0) + -- fun_globalsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:313.6-313.16 + rule fun_globalsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : globaltype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_globalsxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 -def $memsxt(var_0 : externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 - def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 - def $memsxt{mt : memtype, xt_lst : externtype*}([MEM_externtype(mt)] ++ xt_lst) = [mt] ++ $memsxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 - def $memsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $memsxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 +relation fun_memsxt: `%%`(externtype*, memtype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_1{mt : memtype, xt_lst : externtype*, var_0 : memtype*}: + `%%`([MEM_externtype(mt)] ++ xt_lst, [mt] ++ var_0) + -- fun_memsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.6-314.13 + rule fun_memsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : memtype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_memsxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 -def $tablesxt(var_0 : externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 - def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 - def $tablesxt{tt : tabletype, xt_lst : externtype*}([TABLE_externtype(tt)] ++ xt_lst) = [tt] ++ $tablesxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 - def $tablesxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $tablesxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 +relation fun_tablesxt: `%%`(externtype*, tabletype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_1{tt : tabletype, xt_lst : externtype*, var_0 : tabletype*}: + `%%`([TABLE_externtype(tt)] ++ xt_lst, [tt] ++ var_0) + -- fun_tablesxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.6-315.15 + rule fun_tablesxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : tabletype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_tablesxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 -def $funcsxt(var_0 : externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 - def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{v_rectype : rectype, v_n : n, xt_lst : externtype*}([FUNC_externtype(_DEF_typeuse(v_rectype, v_n))] ++ xt_lst) = [_DEF_deftype(v_rectype, v_n)] ++ $funcsxt(xt_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 - def $funcsxt{v_externtype : externtype, xt_lst : externtype*}([v_externtype] ++ xt_lst) = $funcsxt(xt_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 +relation fun_funcsxt: `%%`(externtype*, deftype*) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_1{v_rectype : rectype, v_n : n, xt_lst : externtype*, var_0 : deftype*}: + `%%`([FUNC_externtype(_DEF_typeuse(v_rectype, v_n))] ++ xt_lst, [_DEF_deftype(v_rectype, v_n)] ++ var_0) + -- fun_funcsxt: `%%`(xt_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.6-316.14 + rule fun_funcsxt_case_2{v_externtype : externtype, xt_lst : externtype*, var_0 : deftype*}: + `%%`([v_externtype] ++ xt_lst, var_0) + -- fun_funcsxt: `%%`(xt_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 -def $subst_typevar(v_typevar : typevar, var_0 : typevar*, var_1 : typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 - def $subst_typevar{tv : typevar}(tv, [], []) = $typeuse_typevar(tv) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 - def $subst_typevar{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*}(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst) = (if (tv = tv_1) then tu_1 else $subst_typevar(tv, tv'_lst, tu'_lst)) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 +relation fun_subst_typevar: `%%%%`(typevar, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_0{tv : typevar}: + `%%%%`(tv, [], [], $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_1{tv : typevar, tu_1 : typeuse, tu'_lst : typeuse*}: + `%%%%`(tv, [], [tu_1] ++ tu'_lst, $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_2{tv : typevar, tv_1 : typevar, tv'_lst : typevar*}: + `%%%%`(tv, [tv_1] ++ tv'_lst, [], $typeuse_typevar(tv)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:341.6-341.20 + rule fun_subst_typevar_case_3{tv : typevar, tv_1 : typevar, tv'_lst : typevar*, tu_1 : typeuse, tu'_lst : typeuse*, var_0 : typeuse}: + `%%%%`(tv, [tv_1] ++ tv'_lst, [tu_1] ++ tu'_lst, (if (tv = tv_1) then tu_1 else var_0)) + -- fun_subst_typevar: `%%%%`(tv, tv'_lst, tu'_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 -def $minus_recs(var_0 : typevar*, var_1 : typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 - def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 - def $minus_recs{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*}([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst) = $minus_recs(tv_lst, tu_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 - def $minus_recs{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*}([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst) = ([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 +relation fun_minus_recs: `%%%`(typevar*, typeuse*, (typevar*, typeuse*)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_0: + `%%%`([], [], ([], [])) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_1{v_n : nat, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([REC_typevar(v_n)] ++ tv_lst, [tu_1] ++ tu_lst, var_0) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.6-407.17 + rule fun_minus_recs_case_2{x : uN, tv_lst : typevar*, tu_1 : typeuse, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_0 : (typevar*, typeuse*)}: + `%%%`([_IDX_typevar(x)] ++ tv_lst, [tu_1] ++ tu_lst, ([_IDX_typevar(x)] ++ tv'_lst, [tu_1] ++ tu'_lst)) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_0) -- (wf_typevar: `%`(tv'))*{tv' <- tv'_lst} -- (wf_typeuse: `%`(tu'))*{tu' <- tu'_lst} -- wf_typevar: `%`(_IDX_typevar(x)) - -- if ((tv'_lst, tu'_lst) = $minus_recs(tv_lst, tu_lst)) + -- where (tv'_lst, tu'_lst) = var_0 {tu'_lst, tv'_lst} } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1760,107 +1886,189 @@ def $subst_vectype(v_vectype : vectype, var_0 : typevar*, var_1 : typeuse*) : ve ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 -def $subst_typeuse(v_typeuse : typeuse, var_0 : typevar*, var_1 : typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(REC_typeuse(v_n), tv_lst, tu_lst) = $subst_typevar(REC_typevar(v_n), tv_lst, tu_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 - def $subst_typeuse{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*}(_IDX_typeuse(v_typeidx), tv_lst, tu_lst) = $subst_typevar(_IDX_typevar(v_typeidx), tv_lst, tu_lst) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 - def $subst_typeuse{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(_DEF_typeuse(v_rectype, v_n), tv_lst, tu_lst) = $typeuse_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 -def $subst_heaptype(v_heaptype : heaptype, var_0 : typevar*, var_1 : typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(REC_heaptype(v_n), tv_lst, tu_lst) = $heaptype_typeuse($subst_typevar(REC_typevar(v_n), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 - def $subst_heaptype{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*}(_IDX_heaptype(v_typeidx), tv_lst, tu_lst) = $heaptype_typeuse($subst_typevar(_IDX_typevar(v_typeidx), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:377.1-377.65 - def $subst_heaptype{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(_DEF_heaptype(v_rectype, v_n), tv_lst, tu_lst) = $heaptype_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:378.1-378.53 - def $subst_heaptype{ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(ht, tv_lst, tu_lst) = ht - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 -def $subst_reftype(v_reftype : reftype, var_0 : typevar*, var_1 : typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 - def $subst_reftype{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_reftype(null_opt, ht), tv_lst, tu_lst) = REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst)) - -- wf_reftype: `%`(REF_reftype(null_opt, $subst_heaptype(ht, tv_lst, tu_lst))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 -def $subst_valtype(v_valtype : valtype, var_0 : typevar*, var_1 : typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(I32_valtype, tv_lst, tu_lst) = $valtype_numtype($subst_numtype(I32_numtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(I64_valtype, tv_lst, tu_lst) = $valtype_numtype($subst_numtype(I64_numtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(F32_valtype, tv_lst, tu_lst) = $valtype_numtype($subst_numtype(F32_numtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(F64_valtype, tv_lst, tu_lst) = $valtype_numtype($subst_numtype(F64_numtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(V128_valtype, tv_lst, tu_lst) = $valtype_vectype($subst_vectype(V128_vectype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 - def $subst_valtype{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst) = $valtype_reftype($subst_reftype(REF_reftype(null_opt, v_heaptype), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 - def $subst_valtype{tv_lst : typevar*, tu_lst : typeuse*}(BOT_valtype, tv_lst, tu_lst) = BOT_valtype +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 +relation fun_subst_typeuse: `%%%%`(typeuse, typevar*, typeuse*, typeuse) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_0{v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse}: + `%%%%`(REC_typeuse(v_n), tv_lst, tu_lst, var_0) + -- fun_subst_typevar: `%%%%`(REC_typevar(v_n), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_1{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse}: + `%%%%`(_IDX_typeuse(v_typeidx), tv_lst, tu_lst, var_0) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(v_typeidx), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:342.6-342.20 + rule fun_subst_typeuse_case_2{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_typeuse(v_rectype, v_n), tv_lst, tu_lst, $typeuse_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst, var_0) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 +relation fun_subst_heaptype: `%%%%`(heaptype, typevar*, typeuse*, heaptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_0{v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse}: + `%%%%`(REC_heaptype(v_n), tv_lst, tu_lst, $heaptype_typeuse(var_0)) + -- fun_subst_typevar: `%%%%`(REC_typevar(v_n), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_1{v_typeidx : typeidx, tv_lst : typevar*, tu_lst : typeuse*, var_0 : typeuse}: + `%%%%`(_IDX_heaptype(v_typeidx), tv_lst, tu_lst, $heaptype_typeuse(var_0)) + -- fun_subst_typevar: `%%%%`(_IDX_typevar(v_typeidx), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_2{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : deftype}: + `%%%%`(_DEF_heaptype(v_rectype, v_n), tv_lst, tu_lst, $heaptype_deftype(var_0)) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:347.6-347.21 + rule fun_subst_heaptype_case_3{ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(ht, tv_lst, tu_lst, ht) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.20 +relation fun_subst_reftype: `%%%%`(reftype, typevar*, typeuse*, reftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.6-348.20 + rule fun_subst_reftype_case_0{null_opt : null?, ht : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : heaptype}: + `%%%%`(REF_reftype(null_opt, ht), tv_lst, tu_lst, REF_reftype(null_opt, var_0)) + -- fun_subst_heaptype: `%%%%`(ht, tv_lst, tu_lst, var_0) + -- wf_reftype: `%`(REF_reftype(null_opt, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 +relation fun_subst_valtype: `%%%%`(valtype, typevar*, typeuse*, valtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_0{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I32_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(I32_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_1{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I64_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(I64_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_2{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(F32_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(F32_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_3{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(F64_valtype, tv_lst, tu_lst, $valtype_numtype($subst_numtype(F64_numtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_4{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(V128_valtype, tv_lst, tu_lst, $valtype_vectype($subst_vectype(V128_vectype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_5{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : reftype}: + `%%%%`(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst, $valtype_reftype(var_0)) + -- fun_subst_reftype: `%%%%`(REF_reftype(null_opt, v_heaptype), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.6-349.20 + rule fun_subst_valtype_case_6{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(BOT_valtype, tv_lst, tu_lst, BOT_valtype) -- wf_valtype: `%`(BOT_valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 -def $subst_storagetype(v_storagetype : storagetype, var_0 : typevar*, var_1 : typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(BOT_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(BOT_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*}(REF_storagetype(null_opt, v_heaptype), tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(V128_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(V128_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(F64_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(F64_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(F32_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(F32_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(I64_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(I64_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(I32_storagetype, tv_lst, tu_lst) = $storagetype_valtype($subst_valtype(I32_valtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(I8_storagetype, tv_lst, tu_lst) = $storagetype_packtype($subst_packtype(I8_packtype, tv_lst, tu_lst)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 - def $subst_storagetype{tv_lst : typevar*, tu_lst : typeuse*}(I16_storagetype, tv_lst, tu_lst) = $storagetype_packtype($subst_packtype(I16_packtype, tv_lst, tu_lst)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 -def $subst_fieldtype(v_fieldtype : fieldtype, var_0 : typevar*, var_1 : typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 - def $subst_fieldtype{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*}(mk_fieldtype_fieldtype(mut_opt, zt), tv_lst, tu_lst) = mk_fieldtype_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst)) - -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, $subst_storagetype(zt, tv_lst, tu_lst))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 -def $subst_comptype(v_comptype : comptype, var_0 : typevar*, var_1 : typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*}(STRUCT_comptype(mk_list_list(ft_lst)), tv_lst, tu_lst) = STRUCT_comptype(mk_list_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst})) - -- wf_comptype: `%`(STRUCT_comptype(mk_list_list($subst_fieldtype(ft, tv_lst, tu_lst)*{ft <- ft_lst}))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 - def $subst_comptype{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*}(ARRAY_comptype(ft), tv_lst, tu_lst) = ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst)) - -- wf_comptype: `%`(ARRAY_comptype($subst_fieldtype(ft, tv_lst, tu_lst))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*}(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), tv_lst, tu_lst) = FUNC_comptype(mk_list_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), mk_list_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst})) - -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype($subst_valtype(t_1, tv_lst, tu_lst)*{t_1 <- t_1_lst}), mk_list_resulttype($subst_valtype(t_2, tv_lst, tu_lst)*{t_2 <- t_2_lst}))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 -def $subst_subtype(v_subtype : subtype, var_0 : typevar*, var_1 : typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 - def $subst_subtype{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*}(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst) = SUB_subtype(final_opt, $subst_typeuse(tu', tv_lst, tu_lst)*{tu' <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst)) - -- wf_subtype: `%`(SUB_subtype(final_opt, $subst_typeuse(tu', tv_lst, tu_lst)*{tu' <- tu'_lst}, $subst_comptype(ct, tv_lst, tu_lst))) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 -def $subst_rectype(v_rectype : rectype, var_0 : typevar*, var_1 : typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*}(REC_rectype(mk_list_list(st_lst)), tv_lst, tu_lst) = REC_rectype(mk_list_list($subst_subtype(st, tv'_lst, tu'_lst)*{st <- st_lst})) +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 +relation fun_subst_storagetype: `%%%%`(storagetype, typevar*, typeuse*, storagetype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_0{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(BOT_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(BOT_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_1{null_opt : null?, v_heaptype : heaptype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(REF_valtype(null_opt, v_heaptype), tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_2{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(V128_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(V128_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_3{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(F64_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F64_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_4{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(F32_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(F32_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_5{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(I64_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I64_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_6{tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(I32_storagetype, tv_lst, tu_lst, $storagetype_valtype(var_0)) + -- fun_subst_valtype: `%%%%`(I32_valtype, tv_lst, tu_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_7{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I8_storagetype, tv_lst, tu_lst, $storagetype_packtype($subst_packtype(I8_packtype, tv_lst, tu_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.6-352.24 + rule fun_subst_storagetype_case_8{tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(I16_storagetype, tv_lst, tu_lst, $storagetype_packtype($subst_packtype(I16_packtype, tv_lst, tu_lst))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.22 +relation fun_subst_fieldtype: `%%%%`(fieldtype, typevar*, typeuse*, fieldtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.6-353.22 + rule fun_subst_fieldtype_case_0{mut_opt : mut?, zt : storagetype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : storagetype}: + `%%%%`(mk_fieldtype_fieldtype(mut_opt, zt), tv_lst, tu_lst, mk_fieldtype_fieldtype(mut_opt, var_0)) + -- fun_subst_storagetype: `%%%%`(zt, tv_lst, tu_lst, var_0) + -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, var_0)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 +relation fun_subst_comptype: `%%%%`(comptype, typevar*, typeuse*, comptype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_0{ft_lst : fieldtype*, tv_lst : typevar*, tu_lst : typeuse*, var_0_lst : fieldtype*}: + `%%%%`(STRUCT_comptype(mk_list_list(ft_lst)), tv_lst, tu_lst, STRUCT_comptype(mk_list_list(var_0_lst))) + -- if (|var_0_lst| = |ft_lst|) + -- (fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, ft <- ft_lst} + -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(var_0_lst))) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_1{ft : fieldtype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : fieldtype}: + `%%%%`(ARRAY_comptype(ft), tv_lst, tu_lst, ARRAY_comptype(var_0)) + -- fun_subst_fieldtype: `%%%%`(ft, tv_lst, tu_lst, var_0) + -- wf_comptype: `%`(ARRAY_comptype(var_0)) + + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:355.6-355.21 + rule fun_subst_comptype_case_2{t_1_lst : valtype*, t_2_lst : valtype*, tv_lst : typevar*, tu_lst : typeuse*, var_1_lst : valtype*, var_0_lst : valtype*}: + `%%%%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), tv_lst, tu_lst, FUNC_comptype(mk_list_resulttype(var_0_lst), mk_list_resulttype(var_1_lst))) + -- if (|var_1_lst| = |t_2_lst|) + -- (fun_subst_valtype: `%%%%`(t_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, t_2 <- t_2_lst} + -- if (|var_0_lst| = |t_1_lst|) + -- (fun_subst_valtype: `%%%%`(t_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, t_1 <- t_1_lst} + -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(var_0_lst), mk_list_resulttype(var_1_lst))) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 +relation fun_subst_subtype: `%%%%`(subtype, typevar*, typeuse*, subtype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:356.6-356.20 + rule fun_subst_subtype_case_0{final_opt : final?, tu'_lst : typeuse*, ct : comptype, tv_lst : typevar*, tu_lst : typeuse*, var_1 : comptype, var_0_lst : typeuse*}: + `%%%%`(SUB_subtype(final_opt, tu'_lst, ct), tv_lst, tu_lst, SUB_subtype(final_opt, var_0_lst, var_1)) + -- fun_subst_comptype: `%%%%`(ct, tv_lst, tu_lst, var_1) + -- if (|var_0_lst| = |tu'_lst|) + -- (fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, tu' <- tu'_lst} + -- wf_subtype: `%`(SUB_subtype(final_opt, var_0_lst, var_1)) + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.20 +relation fun_subst_rectype: `%%%%`(rectype, typevar*, typeuse*, rectype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:357.6-357.20 + rule fun_subst_rectype_case_0{st_lst : subtype*, tv_lst : typevar*, tu_lst : typeuse*, tv'_lst : typevar*, tu'_lst : typeuse*, var_1 : (typevar*, typeuse*), var_0_lst : subtype*}: + `%%%%`(REC_rectype(mk_list_list(st_lst)), tv_lst, tu_lst, REC_rectype(mk_list_list(var_0_lst))) + -- fun_minus_recs: `%%%`(tv_lst, tu_lst, var_1) + -- if (|var_0_lst| = |st_lst|) + -- (fun_subst_subtype: `%%%%`(st, tv'_lst, tu'_lst, var_0))*{var_0 <- var_0_lst, st <- st_lst} -- (wf_typevar: `%`(tv'))*{tv' <- tv'_lst} -- (wf_typeuse: `%`(tu'))*{tu' <- tu'_lst} - -- if ((tv'_lst, tu'_lst) = $minus_recs(tv_lst, tu_lst)) - -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 -def $subst_deftype(v_deftype : deftype, var_0 : typevar*, var_1 : typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{qt : rectype, i : nat, tv_lst : typevar*, tu_lst : typeuse*}(_DEF_deftype(qt, i), tv_lst, tu_lst) = _DEF_deftype($subst_rectype(qt, tv_lst, tu_lst), i) + -- where (tv'_lst, tu'_lst) = var_1 {tu'_lst, tv'_lst} + +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.6-358.20 +relation fun_subst_deftype: `%%%%`(deftype, typevar*, typeuse*, deftype) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:358.6-358.20 + rule fun_subst_deftype_case_0{qt : rectype, i : nat, tv_lst : typevar*, tu_lst : typeuse*, var_0 : rectype}: + `%%%%`(_DEF_deftype(qt, i), tv_lst, tu_lst, _DEF_deftype(var_0, i)) + -- fun_subst_rectype: `%%%%`(qt, tv_lst, tu_lst, var_0) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1869,395 +2077,655 @@ def $subst_addrtype(v_addrtype : addrtype, var_0 : typevar*, var_1 : typeuse*) : def $subst_addrtype{at : addrtype, tv_lst : typevar*, tu_lst : typeuse*}(at, tv_lst, tu_lst) = at ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tagtype(v_tagtype : tagtype, var_0 : typevar*, var_1 : typeuse*) : tagtype +relation fun_subst_tagtype: `%%%%`(tagtype, typevar*, typeuse*, tagtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tagtype{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(tu', tv_lst, tu_lst) = $subst_typeuse(tu', tv_lst, tu_lst) + rule fun_subst_tagtype_case_0{tu' : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_0 : tagtype}: + `%%%%`(tu', tv_lst, tu_lst, var_0) + -- fun_subst_typeuse: `%%%%`(tu', tv_lst, tu_lst, var_0) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_globaltype(v_globaltype : globaltype, var_0 : typevar*, var_1 : typeuse*) : globaltype +relation fun_subst_globaltype: `%%%%`(globaltype, typevar*, typeuse*, globaltype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*}(mk_globaltype_globaltype(mut_opt, t), tv_lst, tu_lst) = mk_globaltype_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst)) - -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, $subst_valtype(t, tv_lst, tu_lst))) + rule fun_subst_globaltype_case_0{mut_opt : mut?, t : valtype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : valtype}: + `%%%%`(mk_globaltype_globaltype(mut_opt, t), tv_lst, tu_lst, mk_globaltype_globaltype(mut_opt, var_0)) + -- fun_subst_valtype: `%%%%`(t, tv_lst, tu_lst, var_0) + -- wf_globaltype: `%`(mk_globaltype_globaltype(mut_opt, var_0)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_memtype(v_memtype : memtype, var_0 : typevar*, var_1 : typeuse*) : memtype +relation fun_subst_memtype: `%%%%`(memtype, typevar*, typeuse*, memtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{at : addrtype, lim : limits, tv_lst : typevar*, tu_lst : typeuse*}(`%%PAGE`_memtype(at, lim), tv_lst, tu_lst) = `%%PAGE`_memtype(at, lim) + rule fun_subst_memtype_case_0{at : addrtype, lim : limits, tv_lst : typevar*, tu_lst : typeuse*}: + `%%%%`(`%%PAGE`_memtype(at, lim), tv_lst, tu_lst, `%%PAGE`_memtype(at, lim)) -- wf_memtype: `%`(`%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_tabletype(v_tabletype : tabletype, var_0 : typevar*, var_1 : typeuse*) : tabletype +relation fun_subst_tabletype: `%%%%`(tabletype, typevar*, typeuse*, tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*}(mk_tabletype_tabletype(at, lim, rt), tv_lst, tu_lst) = mk_tabletype_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst)) - -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, $subst_reftype(rt, tv_lst, tu_lst))) + rule fun_subst_tabletype_case_0{at : addrtype, lim : limits, rt : reftype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : reftype}: + `%%%%`(mk_tabletype_tabletype(at, lim, rt), tv_lst, tu_lst, mk_tabletype_tabletype(at, lim, var_0)) + -- fun_subst_reftype: `%%%%`(rt, tv_lst, tu_lst, var_0) + -- wf_tabletype: `%`(mk_tabletype_tabletype(at, lim, var_0)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_externtype(v_externtype : externtype, var_0 : typevar*, var_1 : typeuse*) : externtype +relation fun_subst_externtype: `%%%%`(externtype, typevar*, typeuse*, externtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*}(TAG_externtype(jt), tv_lst, tu_lst) = TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst)) - -- wf_externtype: `%`(TAG_externtype($subst_tagtype(jt, tv_lst, tu_lst))) + rule fun_subst_externtype_case_0{jt : typeuse, tv_lst : typevar*, tu_lst : typeuse*, var_0 : tagtype}: + `%%%%`(TAG_externtype(jt), tv_lst, tu_lst, TAG_externtype(var_0)) + -- fun_subst_tagtype: `%%%%`(jt, tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(TAG_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*}(GLOBAL_externtype(gt), tv_lst, tu_lst) = GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst)) - -- wf_externtype: `%`(GLOBAL_externtype($subst_globaltype(gt, tv_lst, tu_lst))) + rule fun_subst_externtype_case_1{gt : globaltype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : globaltype}: + `%%%%`(GLOBAL_externtype(gt), tv_lst, tu_lst, GLOBAL_externtype(var_0)) + -- fun_subst_globaltype: `%%%%`(gt, tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(GLOBAL_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*}(TABLE_externtype(tt), tv_lst, tu_lst) = TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst)) - -- wf_externtype: `%`(TABLE_externtype($subst_tabletype(tt, tv_lst, tu_lst))) + rule fun_subst_externtype_case_2{tt : tabletype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : tabletype}: + `%%%%`(TABLE_externtype(tt), tv_lst, tu_lst, TABLE_externtype(var_0)) + -- fun_subst_tabletype: `%%%%`(tt, tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(TABLE_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*}(MEM_externtype(mt), tv_lst, tu_lst) = MEM_externtype($subst_memtype(mt, tv_lst, tu_lst)) - -- wf_externtype: `%`(MEM_externtype($subst_memtype(mt, tv_lst, tu_lst))) + rule fun_subst_externtype_case_3{mt : memtype, tv_lst : typevar*, tu_lst : typeuse*, var_0 : memtype}: + `%%%%`(MEM_externtype(mt), tv_lst, tu_lst, MEM_externtype(var_0)) + -- fun_subst_memtype: `%%%%`(mt, tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(MEM_externtype(var_0)) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*}(FUNC_externtype(_DEF_typeuse(v_rectype, v_n)), tv_lst, tu_lst) = FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst))) - -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype($subst_deftype(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst)))) + rule fun_subst_externtype_case_4{v_rectype : rectype, v_n : n, tv_lst : typevar*, tu_lst : typeuse*, var_0 : deftype}: + `%%%%`(FUNC_externtype(_DEF_typeuse(v_rectype, v_n)), tv_lst, tu_lst, FUNC_externtype($typeuse_deftype(var_0))) + -- fun_subst_deftype: `%%%%`(_DEF_deftype(v_rectype, v_n), tv_lst, tu_lst, var_0) + -- wf_externtype: `%`(FUNC_externtype($typeuse_deftype(var_0))) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_moduletype(v_moduletype : moduletype, var_0 : typevar*, var_1 : typeuse*) : moduletype +relation fun_subst_moduletype: `%%%%`(moduletype, typevar*, typeuse*, moduletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*}(mk_moduletype_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst) = mk_moduletype_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst}) - -- wf_moduletype: `%`(mk_moduletype_moduletype($subst_externtype(xt_1, tv_lst, tu_lst)*{xt_1 <- xt_1_lst}, $subst_externtype(xt_2, tv_lst, tu_lst)*{xt_2 <- xt_2_lst})) + rule fun_subst_moduletype_case_0{xt_1_lst : externtype*, xt_2_lst : externtype*, tv_lst : typevar*, tu_lst : typeuse*, var_1_lst : externtype*, var_0_lst : externtype*}: + `%%%%`(mk_moduletype_moduletype(xt_1_lst, xt_2_lst), tv_lst, tu_lst, mk_moduletype_moduletype(var_0_lst, var_1_lst)) + -- if (|var_1_lst| = |xt_2_lst|) + -- (fun_subst_externtype: `%%%%`(xt_2, tv_lst, tu_lst, var_1))*{var_1 <- var_1_lst, xt_2 <- xt_2_lst} + -- if (|var_0_lst| = |xt_1_lst|) + -- (fun_subst_externtype: `%%%%`(xt_1, tv_lst, tu_lst, var_0))*{var_0 <- var_0_lst, xt_1 <- xt_1_lst} + -- wf_moduletype: `%`(mk_moduletype_moduletype(var_0_lst, var_1_lst)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec -def $subst_all_valtype(v_valtype : valtype, var_0 : typeuse*) : valtype +relation fun_subst_all_valtype: `%%%`(valtype, typeuse*, valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, tu_lst : typeuse*, v_n : nat, i_lst : nat*}(t, tu_lst) = $subst_valtype(t, _IDX_typevar(mk_uN_typeidx(i))^(i (valtype_opt = ?())) + -- (fun_free_valtype: `%%`(v_valtype, var_1))?{var_1 <- var_1_opt, v_valtype <- valtype_opt} + -- fun_free_opt: `%%`(var_1_opt, var_0) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{v_typeidx : uN}(_IDX_blocktype(v_typeidx)) = $free_typeidx(v_typeidx) + rule fun_free_blocktype_case_1{v_typeidx : uN, var_0 : free}: + `%%`(_IDX_blocktype(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 -def $shift_labelidxs(var_0 : labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 - def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 - def $shift_labelidxs{labelidx'_lst : labelidx*}([mk_uN_labelidx(0)] ++ labelidx'_lst) = $shift_labelidxs(labelidx'_lst) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 - def $shift_labelidxs{v_labelidx : uN, labelidx'_lst : labelidx*}([v_labelidx] ++ labelidx'_lst) = [mk_uN_labelidx(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'_lst) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 +relation fun_shift_labelidxs: `%%`(labelidx*, labelidx*) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_1{labelidx'_lst : labelidx*, var_0 : labelidx*}: + `%%`([mk_uN_labelidx(0)] ++ labelidx'_lst, var_0) + -- fun_shift_labelidxs: `%%`(labelidx'_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.6-572.22 + rule fun_shift_labelidxs_case_2{v_labelidx : uN, labelidx'_lst : labelidx*, var_0 : labelidx*}: + `%%`([v_labelidx] ++ labelidx'_lst, [mk_uN_labelidx(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ var_0) + -- fun_shift_labelidxs: `%%`(labelidx'_lst, var_0) -- wf_uN: `%%`(32, mk_uN_uN(((($proj_uN_0(v_labelidx).0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 -def $free_instr(v_instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 +relation fun_free_instr: `%%`(instr, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_0: + `%%`(NOP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_1: + `%%`(UNREACHABLE_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_2: + `%%`(DROP_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 - def $free_instr{valtype_lst_opt : valtype*?}(SELECT_instr(valtype_lst_opt)) = $free_opt($free_list($free_valtype(v_valtype)*{v_valtype <- valtype_lst})?{valtype_lst <- valtype_lst_opt}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 - def $free_instr{v_blocktype : blocktype, instr_lst : instr*}(BLOCK_instr(v_blocktype, instr_lst)) = $free_blocktype(v_blocktype) +++ $free_block(instr_lst) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 - def $free_instr{v_blocktype : blocktype, instr_lst : instr*}(LOOP_instr(v_blocktype, instr_lst)) = $free_blocktype(v_blocktype) +++ $free_block(instr_lst) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 - def $free_instr{v_blocktype : blocktype, instr_1_lst : instr*, instr_2_lst : instr*}(`IF%%ELSE%`_instr(v_blocktype, instr_1_lst, instr_2_lst)) = $free_blocktype(v_blocktype) +++ $free_block(instr_1_lst) +++ $free_block(instr_2_lst) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 - def $free_instr{v_labelidx : uN}(BR_instr(v_labelidx)) = $free_labelidx(v_labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 - def $free_instr{v_labelidx : uN}(BR_IF_instr(v_labelidx)) = $free_labelidx(v_labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 - def $free_instr{labelidx_lst : labelidx*, labelidx' : uN}(BR_TABLE_instr(labelidx_lst, labelidx')) = $free_list($free_labelidx(v_labelidx)*{v_labelidx <- labelidx_lst}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 - def $free_instr{v_labelidx : uN}(BR_ON_NULL_instr(v_labelidx)) = $free_labelidx(v_labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 - def $free_instr{v_labelidx : uN}(BR_ON_NON_NULL_instr(v_labelidx)) = $free_labelidx(v_labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 - def $free_instr{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(v_labelidx, reftype_1, reftype_2)) = $free_labelidx(v_labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 - def $free_instr{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(v_labelidx, reftype_1, reftype_2)) = $free_labelidx(v_labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 - def $free_instr{v_funcidx : uN}(CALL_instr(v_funcidx)) = $free_funcidx(v_funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 - def $free_instr{v_typeuse : typeuse}(CALL_REF_instr(v_typeuse)) = $free_typeuse(v_typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 - def $free_instr{v_tableidx : uN, v_typeuse : typeuse}(CALL_INDIRECT_instr(v_tableidx, v_typeuse)) = $free_tableidx(v_tableidx) +++ $free_typeuse(v_typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_3{valtype_lst_opt : valtype*?, var_2_lst_opt : free*?, var_1_opt : free?, var_0 : free}: + `%%`(SELECT_instr(valtype_lst_opt), var_0) + -- if ((var_2_lst_opt = ?()) <=> (valtype_lst_opt = ?())) + -- (if (|var_2_lst| = |valtype_lst|))?{var_2_lst <- var_2_lst_opt, valtype_lst <- valtype_lst_opt} + -- (fun_free_valtype: `%%`(v_valtype, var_2))*{var_2 <- var_2_lst, v_valtype <- valtype_lst}?{var_2_lst <- var_2_lst_opt, valtype_lst <- valtype_lst_opt} + -- if ((var_2_lst_opt = ?()) <=> (var_1_opt = ?())) + -- (fun_free_list: `%%`(var_2_lst, var_1))?{var_2_lst <- var_2_lst_opt, var_1 <- var_1_opt} + -- fun_free_opt: `%%`(var_1_opt, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_4{v_blocktype : blocktype, instr_lst : instr*, var_1 : free, var_0 : free}: + `%%`(BLOCK_instr(v_blocktype, instr_lst), var_0 +++ var_1) + -- fun_free_block: `%%`(instr_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_5{v_blocktype : blocktype, instr_lst : instr*, var_1 : free, var_0 : free}: + `%%`(LOOP_instr(v_blocktype, instr_lst), var_0 +++ var_1) + -- fun_free_block: `%%`(instr_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_6{v_blocktype : blocktype, instr_1_lst : instr*, instr_2_lst : instr*, var_2 : free, var_1 : free, var_0 : free}: + `%%`(`IF%%ELSE%`_instr(v_blocktype, instr_1_lst, instr_2_lst), var_0 +++ var_1 +++ var_2) + -- fun_free_block: `%%`(instr_2_lst, var_2) + -- fun_free_block: `%%`(instr_1_lst, var_1) + -- fun_free_blocktype: `%%`(v_blocktype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_7{v_labelidx : uN, var_0 : free}: + `%%`(BR_instr(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_8{v_labelidx : uN, var_0 : free}: + `%%`(BR_IF_instr(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_9{labelidx_lst : labelidx*, labelidx' : uN, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(BR_TABLE_instr(labelidx_lst, labelidx'), var_0 +++ var_2) + -- fun_free_labelidx: `%%`(labelidx', var_2) + -- if (|var_1_lst| = |labelidx_lst|) + -- (fun_free_labelidx: `%%`(v_labelidx, var_1))*{var_1 <- var_1_lst, v_labelidx <- labelidx_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_10{v_labelidx : uN, var_0 : free}: + `%%`(BR_ON_NULL_instr(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_11{v_labelidx : uN, var_0 : free}: + `%%`(BR_ON_NON_NULL_instr(v_labelidx), var_0) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_12{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_instr(v_labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_13{v_labelidx : uN, reftype_1 : reftype, reftype_2 : reftype, var_2 : free, var_1 : free, var_0 : free}: + `%%`(BR_ON_CAST_FAIL_instr(v_labelidx, reftype_1, reftype_2), var_0 +++ var_1 +++ var_2) + -- fun_free_reftype: `%%`(reftype_2, var_2) + -- fun_free_reftype: `%%`(reftype_1, var_1) + -- fun_free_labelidx: `%%`(v_labelidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_14{v_funcidx : uN, var_0 : free}: + `%%`(CALL_instr(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_15{v_typeuse : typeuse, var_0 : free}: + `%%`(CALL_REF_instr(v_typeuse), var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_16{v_tableidx : uN, v_typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(CALL_INDIRECT_instr(v_tableidx, v_typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(v_typeuse, var_1) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_17: + `%%`(RETURN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 - def $free_instr{v_funcidx : uN}(RETURN_CALL_instr(v_funcidx)) = $free_funcidx(v_funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 - def $free_instr{v_typeuse : typeuse}(RETURN_CALL_REF_instr(v_typeuse)) = $free_typeuse(v_typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 - def $free_instr{v_tableidx : uN, v_typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(v_tableidx, v_typeuse)) = $free_tableidx(v_tableidx) +++ $free_typeuse(v_typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 - def $free_instr{v_numtype : numtype, numlit : num_}(CONST_instr(v_numtype, numlit)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 - def $free_instr{v_numtype : numtype, unop : unop_}(UNOP_instr(v_numtype, unop)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 - def $free_instr{v_numtype : numtype, binop : binop_}(BINOP_instr(v_numtype, binop)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 - def $free_instr{v_numtype : numtype, testop : testop_}(TESTOP_instr(v_numtype, testop)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 - def $free_instr{v_numtype : numtype, relop : relop_}(RELOP_instr(v_numtype, relop)) = $free_numtype(v_numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 - def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 - def $free_instr{v_vectype : vectype, veclit : uN}(VCONST_instr(v_vectype, veclit)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 - def $free_instr{v_vectype : vectype, v_vvunop : vvunop}(VVUNOP_instr(v_vectype, v_vvunop)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 - def $free_instr{v_vectype : vectype, v_vvbinop : vvbinop}(VVBINOP_instr(v_vectype, v_vvbinop)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 - def $free_instr{v_vectype : vectype, v_vvternop : vvternop}(VVTERNOP_instr(v_vectype, v_vvternop)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 - def $free_instr{v_vectype : vectype, v_vvtestop : vvtestop}(VVTESTOP_instr(v_vectype, v_vvtestop)) = $free_vectype(v_vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 - def $free_instr{v_shape : shape, vunop : vunop_}(VUNOP_instr(v_shape, vunop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 - def $free_instr{v_shape : shape, vbinop : vbinop_}(VBINOP_instr(v_shape, vbinop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 - def $free_instr{v_shape : shape, vternop : vternop_}(VTERNOP_instr(v_shape, vternop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 - def $free_instr{v_shape : shape, vtestop : vtestop_}(VTESTOP_instr(v_shape, vtestop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 - def $free_instr{v_shape : shape, vrelop : vrelop_}(VRELOP_instr(v_shape, vrelop)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 - def $free_instr{v_ishape : ishape, vshiftop : vshiftop_}(VSHIFTOP_instr(v_ishape, vshiftop)) = $free_shape($proj_ishape_0(v_ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 - def $free_instr{v_ishape : ishape}(VBITMASK_instr(v_ishape)) = $free_shape($proj_ishape_0(v_ishape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 - def $free_instr{v_bshape : bshape, vswizzlop : vswizzlop_}(VSWIZZLOP_instr(v_bshape, vswizzlop)) = $free_shape($proj_bshape_0(v_bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 - def $free_instr{v_bshape : bshape, laneidx_lst : laneidx*}(VSHUFFLE_instr(v_bshape, laneidx_lst)) = $free_shape($proj_bshape_0(v_bshape).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 - def $free_instr{ishape_1 : ishape, ishape_2 : ishape, v_sx : sx}(VNARROW_instr(ishape_1, ishape_2, v_sx)) = $free_shape($proj_ishape_0(ishape_1).0) +++ $free_shape($proj_ishape_0(ishape_2).0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 - def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 - def $free_instr{v_shape : shape}(VSPLAT_instr(v_shape)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 - def $free_instr{v_shape : shape, sx_opt : sx?, v_laneidx : uN}(VEXTRACT_LANE_instr(v_shape, sx_opt, v_laneidx)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 - def $free_instr{v_shape : shape, v_laneidx : uN}(VREPLACE_LANE_instr(v_shape, v_laneidx)) = $free_shape(v_shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 - def $free_instr{v_heaptype : heaptype}(REF_NULL_instr(v_heaptype)) = $free_heaptype(v_heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 - def $free_instr(REF_IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_18{v_funcidx : uN, var_0 : free}: + `%%`(RETURN_CALL_instr(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_19{v_typeuse : typeuse, var_0 : free}: + `%%`(RETURN_CALL_REF_instr(v_typeuse), var_0) + -- fun_free_typeuse: `%%`(v_typeuse, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_20{v_tableidx : uN, v_typeuse : typeuse, var_1 : free, var_0 : free}: + `%%`(RETURN_CALL_INDIRECT_instr(v_tableidx, v_typeuse), var_0 +++ var_1) + -- fun_free_typeuse: `%%`(v_typeuse, var_1) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_21{v_numtype : numtype, numlit : num_, var_0 : free}: + `%%`(CONST_instr(v_numtype, numlit), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_22{v_numtype : numtype, unop : unop_, var_0 : free}: + `%%`(UNOP_instr(v_numtype, unop), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_23{v_numtype : numtype, binop : binop_, var_0 : free}: + `%%`(BINOP_instr(v_numtype, binop), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_24{v_numtype : numtype, testop : testop_, var_0 : free}: + `%%`(TESTOP_instr(v_numtype, testop), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_25{v_numtype : numtype, relop : relop_, var_0 : free}: + `%%`(RELOP_instr(v_numtype, relop), var_0) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_26{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__, var_1 : free, var_0 : free}: + `%%`(CVTOP_instr(numtype_1, numtype_2, cvtop), var_0 +++ var_1) + -- fun_free_numtype: `%%`(numtype_2, var_1) + -- fun_free_numtype: `%%`(numtype_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_27{v_vectype : vectype, veclit : uN, var_0 : free}: + `%%`(VCONST_instr(v_vectype, veclit), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_28{v_vectype : vectype, v_vvunop : vvunop, var_0 : free}: + `%%`(VVUNOP_instr(v_vectype, v_vvunop), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_29{v_vectype : vectype, v_vvbinop : vvbinop, var_0 : free}: + `%%`(VVBINOP_instr(v_vectype, v_vvbinop), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_30{v_vectype : vectype, v_vvternop : vvternop, var_0 : free}: + `%%`(VVTERNOP_instr(v_vectype, v_vvternop), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_31{v_vectype : vectype, v_vvtestop : vvtestop, var_0 : free}: + `%%`(VVTESTOP_instr(v_vectype, v_vvtestop), var_0) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_32{v_shape : shape, vunop : vunop_, var_0 : free}: + `%%`(VUNOP_instr(v_shape, vunop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_33{v_shape : shape, vbinop : vbinop_, var_0 : free}: + `%%`(VBINOP_instr(v_shape, vbinop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_34{v_shape : shape, vternop : vternop_, var_0 : free}: + `%%`(VTERNOP_instr(v_shape, vternop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_35{v_shape : shape, vtestop : vtestop_, var_0 : free}: + `%%`(VTESTOP_instr(v_shape, vtestop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_36{v_shape : shape, vrelop : vrelop_, var_0 : free}: + `%%`(VRELOP_instr(v_shape, vrelop), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_37{v_ishape : ishape, vshiftop : vshiftop_, var_0 : free}: + `%%`(VSHIFTOP_instr(v_ishape, vshiftop), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(v_ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_38{v_ishape : ishape, var_0 : free}: + `%%`(VBITMASK_instr(v_ishape), var_0) + -- fun_free_shape: `%%`($proj_ishape_0(v_ishape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_39{v_bshape : bshape, vswizzlop : vswizzlop_, var_0 : free}: + `%%`(VSWIZZLOP_instr(v_bshape, vswizzlop), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(v_bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_40{v_bshape : bshape, laneidx_lst : laneidx*, var_0 : free}: + `%%`(VSHUFFLE_instr(v_bshape, laneidx_lst), var_0) + -- fun_free_shape: `%%`($proj_bshape_0(v_bshape).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_41{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__, var_1 : free, var_0 : free}: + `%%`(VEXTUNOP_instr(ishape_1, ishape_2, vextunop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_42{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__, var_1 : free, var_0 : free}: + `%%`(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_43{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__, var_1 : free, var_0 : free}: + `%%`(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_44{ishape_1 : ishape, ishape_2 : ishape, v_sx : sx, var_1 : free, var_0 : free}: + `%%`(VNARROW_instr(ishape_1, ishape_2, v_sx), var_0 +++ var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_2).0, var_1) + -- fun_free_shape: `%%`($proj_ishape_0(ishape_1).0, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_45{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__, var_1 : free, var_0 : free}: + `%%`(VCVTOP_instr(shape_1, shape_2, vcvtop), var_0 +++ var_1) + -- fun_free_shape: `%%`(shape_2, var_1) + -- fun_free_shape: `%%`(shape_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_46{v_shape : shape, var_0 : free}: + `%%`(VSPLAT_instr(v_shape), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_47{v_shape : shape, sx_opt : sx?, v_laneidx : uN, var_0 : free}: + `%%`(VEXTRACT_LANE_instr(v_shape, sx_opt, v_laneidx), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_48{v_shape : shape, v_laneidx : uN, var_0 : free}: + `%%`(VREPLACE_LANE_instr(v_shape, v_laneidx), var_0) + -- fun_free_shape: `%%`(v_shape, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_49{v_heaptype : heaptype, var_0 : free}: + `%%`(REF_NULL_instr(v_heaptype), var_0) + -- fun_free_heaptype: `%%`(v_heaptype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_50: + `%%`(REF_IS_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 - def $free_instr(REF_AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_51: + `%%`(REF_AS_NON_NULL_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 - def $free_instr(REF_EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_52: + `%%`(REF_EQ_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 - def $free_instr{v_reftype : reftype}(REF_TEST_instr(v_reftype)) = $free_reftype(v_reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 - def $free_instr{v_reftype : reftype}(REF_CAST_instr(v_reftype)) = $free_reftype(v_reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 - def $free_instr{v_funcidx : uN}(REF_FUNC_instr(v_funcidx)) = $free_funcidx(v_funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 - def $free_instr(REF_I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_53{v_reftype : reftype, var_0 : free}: + `%%`(REF_TEST_instr(v_reftype), var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_54{v_reftype : reftype, var_0 : free}: + `%%`(REF_CAST_instr(v_reftype), var_0) + -- fun_free_reftype: `%%`(v_reftype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_55{v_funcidx : uN, var_0 : free}: + `%%`(REF_FUNC_instr(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_56: + `%%`(REF_I31_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 - def $free_instr{v_sx : sx}(I31_GET_instr(v_sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_57{v_sx : sx}: + `%%`(I31_GET_instr(v_sx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 - def $free_instr{v_typeidx : uN}(STRUCT_NEW_instr(v_typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_58{v_typeidx : uN}: + `%%`(STRUCT_NEW_instr(v_typeidx), {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 - def $free_instr{v_typeidx : uN}(STRUCT_NEW_DEFAULT_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 - def $free_instr{sx_opt : sx?, v_typeidx : uN, v_u32 : uN}(STRUCT_GET_instr(sx_opt, v_typeidx, v_u32)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 - def $free_instr{v_typeidx : uN, v_u32 : uN}(STRUCT_SET_instr(v_typeidx, v_u32)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 - def $free_instr{v_typeidx : uN}(ARRAY_NEW_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 - def $free_instr{v_typeidx : uN}(ARRAY_NEW_DEFAULT_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 - def $free_instr{v_typeidx : uN, v_u32 : uN}(ARRAY_NEW_FIXED_instr(v_typeidx, v_u32)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 - def $free_instr{v_typeidx : uN, v_dataidx : uN}(ARRAY_NEW_DATA_instr(v_typeidx, v_dataidx)) = $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 - def $free_instr{v_typeidx : uN, v_elemidx : uN}(ARRAY_NEW_ELEM_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 - def $free_instr{sx_opt : sx?, v_typeidx : uN}(ARRAY_GET_instr(sx_opt, v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 - def $free_instr{v_typeidx : uN}(ARRAY_SET_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 - def $free_instr(ARRAY_LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_59{v_typeidx : uN, var_0 : free}: + `%%`(STRUCT_NEW_DEFAULT_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_60{sx_opt : sx?, v_typeidx : uN, v_u32 : uN, var_0 : free}: + `%%`(STRUCT_GET_instr(sx_opt, v_typeidx, v_u32), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_61{v_typeidx : uN, v_u32 : uN, var_0 : free}: + `%%`(STRUCT_SET_instr(v_typeidx, v_u32), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_62{v_typeidx : uN, var_0 : free}: + `%%`(ARRAY_NEW_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_63{v_typeidx : uN, var_0 : free}: + `%%`(ARRAY_NEW_DEFAULT_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_64{v_typeidx : uN, v_u32 : uN, var_0 : free}: + `%%`(ARRAY_NEW_FIXED_instr(v_typeidx, v_u32), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_65{v_typeidx : uN, v_dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY_NEW_DATA_instr(v_typeidx, v_dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(v_dataidx, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_66{v_typeidx : uN, v_elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY_NEW_ELEM_instr(v_typeidx, v_elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(v_elemidx, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_67{sx_opt : sx?, v_typeidx : uN, var_0 : free}: + `%%`(ARRAY_GET_instr(sx_opt, v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_68{v_typeidx : uN, var_0 : free}: + `%%`(ARRAY_SET_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_69: + `%%`(ARRAY_LEN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 - def $free_instr{v_typeidx : uN}(ARRAY_FILL_instr(v_typeidx)) = $free_typeidx(v_typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 - def $free_instr{typeidx_1 : uN, typeidx_2 : uN}(ARRAY_COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 - def $free_instr{v_typeidx : uN, v_dataidx : uN}(ARRAY_INIT_DATA_instr(v_typeidx, v_dataidx)) = $free_typeidx(v_typeidx) +++ $free_dataidx(v_dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{v_typeidx : uN, v_elemidx : uN}(ARRAY_INIT_ELEM_instr(v_typeidx, v_elemidx)) = $free_typeidx(v_typeidx) +++ $free_elemidx(v_elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 - def $free_instr(EXTERN_CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_70{v_typeidx : uN, var_0 : free}: + `%%`(ARRAY_FILL_instr(v_typeidx), var_0) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_71{typeidx_1 : uN, typeidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY_COPY_instr(typeidx_1, typeidx_2), var_0 +++ var_1) + -- fun_free_typeidx: `%%`(typeidx_2, var_1) + -- fun_free_typeidx: `%%`(typeidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_72{v_typeidx : uN, v_dataidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY_INIT_DATA_instr(v_typeidx, v_dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(v_dataidx, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_73{v_typeidx : uN, v_elemidx : uN, var_1 : free, var_0 : free}: + `%%`(ARRAY_INIT_ELEM_instr(v_typeidx, v_elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(v_elemidx, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_74: + `%%`(EXTERN_CONVERT_ANY_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 - def $free_instr(ANY_CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_75: + `%%`(ANY_CONVERT_EXTERN_instr, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 - def $free_instr{v_localidx : uN}(LOCAL_GET_instr(v_localidx)) = $free_localidx(v_localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 - def $free_instr{v_localidx : uN}(LOCAL_SET_instr(v_localidx)) = $free_localidx(v_localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 - def $free_instr{v_localidx : uN}(LOCAL_TEE_instr(v_localidx)) = $free_localidx(v_localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 - def $free_instr{v_globalidx : uN}(GLOBAL_GET_instr(v_globalidx)) = $free_globalidx(v_globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 - def $free_instr{v_globalidx : uN}(GLOBAL_SET_instr(v_globalidx)) = $free_globalidx(v_globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 - def $free_instr{v_tableidx : uN}(TABLE_GET_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 - def $free_instr{v_tableidx : uN}(TABLE_SET_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 - def $free_instr{v_tableidx : uN}(TABLE_SIZE_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 - def $free_instr{v_tableidx : uN}(TABLE_GROW_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 - def $free_instr{v_tableidx : uN}(TABLE_FILL_instr(v_tableidx)) = $free_tableidx(v_tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 - def $free_instr{tableidx_1 : uN, tableidx_2 : uN}(TABLE_COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 - def $free_instr{v_tableidx : uN, v_elemidx : uN}(TABLE_INIT_instr(v_tableidx, v_elemidx)) = $free_tableidx(v_tableidx) +++ $free_elemidx(v_elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 - def $free_instr{v_elemidx : uN}(ELEM_DROP_instr(v_elemidx)) = $free_elemidx(v_elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 - def $free_instr{v_numtype : numtype, loadop_opt : loadop_?, v_memidx : uN, v_memarg : memarg}(LOAD_instr(v_numtype, loadop_opt, v_memidx, v_memarg)) = $free_numtype(v_numtype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 - def $free_instr{v_numtype : numtype, storeop_opt : storeop_?, v_memidx : uN, v_memarg : memarg}(STORE_instr(v_numtype, storeop_opt, v_memidx, v_memarg)) = $free_numtype(v_numtype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 - def $free_instr{v_vectype : vectype, vloadop_opt : vloadop_?, v_memidx : uN, v_memarg : memarg}(VLOAD_instr(v_vectype, vloadop_opt, v_memidx, v_memarg)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 - def $free_instr{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN}(VLOAD_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 - def $free_instr{v_vectype : vectype, v_memidx : uN, v_memarg : memarg}(VSTORE_instr(v_vectype, v_memidx, v_memarg)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 - def $free_instr{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN}(VSTORE_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx)) = $free_vectype(v_vectype) +++ $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 - def $free_instr{v_memidx : uN}(MEMORY_SIZE_instr(v_memidx)) = $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 - def $free_instr{v_memidx : uN}(MEMORY_GROW_instr(v_memidx)) = $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 - def $free_instr{v_memidx : uN}(MEMORY_FILL_instr(v_memidx)) = $free_memidx(v_memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 - def $free_instr{memidx_1 : uN, memidx_2 : uN}(MEMORY_COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 - def $free_instr{v_memidx : uN, v_dataidx : uN}(MEMORY_INIT_instr(v_memidx, v_dataidx)) = $free_memidx(v_memidx) +++ $free_dataidx(v_dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 - def $free_instr{v_dataidx : uN}(DATA_DROP_instr(v_dataidx)) = $free_dataidx(v_dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 -def $free_block(var_0 : instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 - def $free_block{instr_lst : instr*, v_free : free}(instr_lst) = v_free[LABELS_free = $shift_labelidxs(v_free.LABELS_free)] + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_76{v_localidx : uN, var_0 : free}: + `%%`(LOCAL_GET_instr(v_localidx), var_0) + -- fun_free_localidx: `%%`(v_localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_77{v_localidx : uN, var_0 : free}: + `%%`(LOCAL_SET_instr(v_localidx), var_0) + -- fun_free_localidx: `%%`(v_localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_78{v_localidx : uN, var_0 : free}: + `%%`(LOCAL_TEE_instr(v_localidx), var_0) + -- fun_free_localidx: `%%`(v_localidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_79{v_globalidx : uN, var_0 : free}: + `%%`(GLOBAL_GET_instr(v_globalidx), var_0) + -- fun_free_globalidx: `%%`(v_globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_80{v_globalidx : uN, var_0 : free}: + `%%`(GLOBAL_SET_instr(v_globalidx), var_0) + -- fun_free_globalidx: `%%`(v_globalidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_81{v_tableidx : uN, var_0 : free}: + `%%`(TABLE_GET_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_82{v_tableidx : uN, var_0 : free}: + `%%`(TABLE_SET_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_83{v_tableidx : uN, var_0 : free}: + `%%`(TABLE_SIZE_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_84{v_tableidx : uN, var_0 : free}: + `%%`(TABLE_GROW_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_85{v_tableidx : uN, var_0 : free}: + `%%`(TABLE_FILL_instr(v_tableidx), var_0) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_86{tableidx_1 : uN, tableidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(TABLE_COPY_instr(tableidx_1, tableidx_2), var_0 +++ var_1) + -- fun_free_tableidx: `%%`(tableidx_2, var_1) + -- fun_free_tableidx: `%%`(tableidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_87{v_tableidx : uN, v_elemidx : uN, var_1 : free, var_0 : free}: + `%%`(TABLE_INIT_instr(v_tableidx, v_elemidx), var_0 +++ var_1) + -- fun_free_elemidx: `%%`(v_elemidx, var_1) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_88{v_elemidx : uN, var_0 : free}: + `%%`(ELEM_DROP_instr(v_elemidx), var_0) + -- fun_free_elemidx: `%%`(v_elemidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_89{v_numtype : numtype, loadop_opt : loadop_?, v_memidx : uN, v_memarg : memarg, var_1 : free, var_0 : free}: + `%%`(LOAD_instr(v_numtype, loadop_opt, v_memidx, v_memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_90{v_numtype : numtype, storeop_opt : storeop_?, v_memidx : uN, v_memarg : memarg, var_1 : free, var_0 : free}: + `%%`(STORE_instr(v_numtype, storeop_opt, v_memidx, v_memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_numtype: `%%`(v_numtype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_91{v_vectype : vectype, vloadop_opt : vloadop_?, v_memidx : uN, v_memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VLOAD_instr(v_vectype, vloadop_opt, v_memidx, v_memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_92{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VLOAD_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_93{v_vectype : vectype, v_memidx : uN, v_memarg : memarg, var_1 : free, var_0 : free}: + `%%`(VSTORE_instr(v_vectype, v_memidx, v_memarg), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_94{v_vectype : vectype, v_sz : sz, v_memidx : uN, v_memarg : memarg, v_laneidx : uN, var_1 : free, var_0 : free}: + `%%`(VSTORE_LANE_instr(v_vectype, v_sz, v_memidx, v_memarg, v_laneidx), var_0 +++ var_1) + -- fun_free_memidx: `%%`(v_memidx, var_1) + -- fun_free_vectype: `%%`(v_vectype, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_95{v_memidx : uN, var_0 : free}: + `%%`(MEMORY_SIZE_instr(v_memidx), var_0) + -- fun_free_memidx: `%%`(v_memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_96{v_memidx : uN, var_0 : free}: + `%%`(MEMORY_GROW_instr(v_memidx), var_0) + -- fun_free_memidx: `%%`(v_memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_97{v_memidx : uN, var_0 : free}: + `%%`(MEMORY_FILL_instr(v_memidx), var_0) + -- fun_free_memidx: `%%`(v_memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_98{memidx_1 : uN, memidx_2 : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY_COPY_instr(memidx_1, memidx_2), var_0 +++ var_1) + -- fun_free_memidx: `%%`(memidx_2, var_1) + -- fun_free_memidx: `%%`(memidx_1, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_99{v_memidx : uN, v_dataidx : uN, var_1 : free, var_0 : free}: + `%%`(MEMORY_INIT_instr(v_memidx, v_dataidx), var_0 +++ var_1) + -- fun_free_dataidx: `%%`(v_dataidx, var_1) + -- fun_free_memidx: `%%`(v_memidx, var_0) + + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.6-417.17 + rule fun_free_instr_case_100{v_dataidx : uN, var_0 : free}: + `%%`(DATA_DROP_instr(v_dataidx), var_0) + -- fun_free_dataidx: `%%`(v_dataidx, var_0) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 +relation fun_free_block: `%%`(instr*, free) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.6-418.17 + rule fun_free_block_case_0{instr_lst : instr*, v_free : free, var_2_lst : free*, var_1 : free, var_0 : labelidx*}: + `%%`(instr_lst, v_free[LABELS_free = var_0]) + -- if (|var_2_lst| = |instr_lst|) + -- (fun_free_instr: `%%`(v_instr, var_2))*{var_2 <- var_2_lst, v_instr <- instr_lst} + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_shift_labelidxs: `%%`(v_free.LABELS_free, var_0) -- wf_free: `%`(v_free) - -- if (v_free = $free_list($free_instr(v_instr)*{v_instr <- instr_lst})) + -- where v_free = var_1 {v_free} } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -def $free_expr(v_expr : expr) : free +relation fun_free_expr: `%%`(expr, free) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{instr_lst : instr*}(instr_lst) = $free_list($free_instr(v_instr)*{v_instr <- instr_lst}) + rule fun_free_expr_case_0{instr_lst : instr*, var_1_lst : free*, var_0 : free}: + `%%`(instr_lst, var_0) + -- if (|var_1_lst| = |instr_lst|) + -- (fun_free_instr: `%%`(v_instr, var_1))*{var_1 <- var_1_lst, v_instr <- instr_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = @@ -5016,98 +5849,184 @@ relation wf_module: `%`(module) -- (wf_export: `%`(v_export))*{v_export <- export_lst} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_type(v_type : type) : free +relation fun_free_type: `%%`(type, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{v_rectype : rectype}(TYPE_type(v_rectype)) = $free_rectype(v_rectype) + rule fun_free_type_case_0{v_rectype : rectype, var_0 : free}: + `%%`(TYPE_type(v_rectype), var_0) + -- fun_free_rectype: `%%`(v_rectype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_tag(v_tag : tag) : free +relation fun_free_tag: `%%`(tag, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{v_tagtype : typeuse}(TAG_tag(v_tagtype)) = $free_tagtype(v_tagtype) + rule fun_free_tag_case_0{v_tagtype : typeuse, var_0 : free}: + `%%`(TAG_tag(v_tagtype), var_0) + -- fun_free_tagtype: `%%`(v_tagtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_global(v_global : global) : free +relation fun_free_global: `%%`(global, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_global{v_globaltype : globaltype, v_expr : instr*}(GLOBAL_global(v_globaltype, v_expr)) = $free_globaltype(v_globaltype) +++ $free_expr(v_expr) + rule fun_free_global_case_0{v_globaltype : globaltype, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(GLOBAL_global(v_globaltype, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_globaltype: `%%`(v_globaltype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_mem(v_mem : mem) : free +relation fun_free_mem: `%%`(mem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{v_memtype : memtype}(MEMORY_mem(v_memtype)) = $free_memtype(v_memtype) + rule fun_free_mem_case_0{v_memtype : memtype, var_0 : free}: + `%%`(MEMORY_mem(v_memtype), var_0) + -- fun_free_memtype: `%%`(v_memtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_table(v_table : table) : free +relation fun_free_table: `%%`(table, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_table{v_tabletype : tabletype, v_expr : instr*}(TABLE_table(v_tabletype, v_expr)) = $free_tabletype(v_tabletype) +++ $free_expr(v_expr) + rule fun_free_table_case_0{v_tabletype : tabletype, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(TABLE_table(v_tabletype, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_tabletype: `%%`(v_tabletype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_local(v_local : local) : free +relation fun_free_local: `%%`(local, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) + rule fun_free_local_case_0{t : valtype, var_0 : free}: + `%%`(LOCAL_local(t), var_0) + -- fun_free_valtype: `%%`(t, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_func(v_func : func) : free +relation fun_free_func: `%%`(func, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_func{v_typeidx : uN, local_lst : local*, v_expr : instr*}(FUNC_func(v_typeidx, local_lst, v_expr)) = $free_typeidx(v_typeidx) +++ $free_list($free_local(v_local)*{v_local <- local_lst}) +++ $free_block(v_expr)[LOCALS_free = []] + rule fun_free_func_case_0{v_typeidx : uN, local_lst : local*, v_expr : instr*, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : free}: + `%%`(FUNC_func(v_typeidx, local_lst, v_expr), var_0 +++ var_1 +++ var_3[LOCALS_free = []]) + -- fun_free_block: `%%`(v_expr, var_3) + -- if (|var_2_lst| = |local_lst|) + -- (fun_free_local: `%%`(v_local, var_2))*{var_2 <- var_2_lst, v_local <- local_lst} + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_free_typeidx: `%%`(v_typeidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_datamode(v_datamode : datamode) : free +relation fun_free_datamode: `%%`(datamode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{v_memidx : uN, v_expr : instr*}(ACTIVE_datamode(v_memidx, v_expr)) = $free_memidx(v_memidx) +++ $free_expr(v_expr) + rule fun_free_datamode_case_0{v_memidx : uN, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_datamode(v_memidx, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_memidx: `%%`(v_memidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_datamode_case_1: + `%%`(PASSIVE_datamode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_data(v_data : data) : free +relation fun_free_data: `%%`(data, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_data{byte_lst : byte*, v_datamode : datamode}(DATA_data(byte_lst, v_datamode)) = $free_datamode(v_datamode) + rule fun_free_data_case_0{byte_lst : byte*, v_datamode : datamode, var_0 : free}: + `%%`(DATA_data(byte_lst, v_datamode), var_0) + -- fun_free_datamode: `%%`(v_datamode, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elemmode(v_elemmode : elemmode) : free +relation fun_free_elemmode: `%%`(elemmode, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{v_tableidx : uN, v_expr : instr*}(ACTIVE_elemmode(v_tableidx, v_expr)) = $free_tableidx(v_tableidx) +++ $free_expr(v_expr) + rule fun_free_elemmode_case_0{v_tableidx : uN, v_expr : instr*, var_1 : free, var_0 : free}: + `%%`(ACTIVE_elemmode(v_tableidx, v_expr), var_0 +++ var_1) + -- fun_free_expr: `%%`(v_expr, var_1) + -- fun_free_tableidx: `%%`(v_tableidx, var_0) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemmode_case_1: + `%%`(PASSIVE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + rule fun_free_elemmode_case_2: + `%%`(DECLARE_elemmode, {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) -- wf_free: `%`({TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_elem(v_elem : elem) : free +relation fun_free_elem: `%%`(elem, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elem{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode}(ELEM_elem(v_reftype, expr_lst, v_elemmode)) = $free_reftype(v_reftype) +++ $free_list($free_expr(v_expr)*{v_expr <- expr_lst}) +++ $free_elemmode(v_elemmode) + rule fun_free_elem_case_0{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode, var_3 : free, var_2_lst : free*, var_1 : free, var_0 : free}: + `%%`(ELEM_elem(v_reftype, expr_lst, v_elemmode), var_0 +++ var_1 +++ var_3) + -- fun_free_elemmode: `%%`(v_elemmode, var_3) + -- if (|var_2_lst| = |expr_lst|) + -- (fun_free_expr: `%%`(v_expr, var_2))*{var_2 <- var_2_lst, v_expr <- expr_lst} + -- fun_free_list: `%%`(var_2_lst, var_1) + -- fun_free_reftype: `%%`(v_reftype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_start(v_start : start) : free +relation fun_free_start: `%%`(start, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{v_funcidx : uN}(START_start(v_funcidx)) = $free_funcidx(v_funcidx) + rule fun_free_start_case_0{v_funcidx : uN, var_0 : free}: + `%%`(START_start(v_funcidx), var_0) + -- fun_free_funcidx: `%%`(v_funcidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_import(v_import : import) : free +relation fun_free_import: `%%`(import, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_import{name_1 : name, name_2 : name, v_externtype : externtype}(IMPORT_import(name_1, name_2, v_externtype)) = $free_externtype(v_externtype) + rule fun_free_import_case_0{name_1 : name, name_2 : name, v_externtype : externtype, var_0 : free}: + `%%`(IMPORT_import(name_1, name_2, v_externtype), var_0) + -- fun_free_externtype: `%%`(v_externtype, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_export(v_export : export) : free +relation fun_free_export: `%%`(export, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{v_name : name, v_externidx : externidx}(EXPORT_export(v_name, v_externidx)) = $free_externidx(v_externidx) + rule fun_free_export_case_0{v_name : name, v_externidx : externidx, var_0 : free}: + `%%`(EXPORT_export(v_name, v_externidx), var_0) + -- fun_free_externidx: `%%`(v_externidx, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $free_module(v_module : module) : free +relation fun_free_module: `%%`(module, free) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*}(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) = $free_list($free_type(v_type)*{v_type <- type_lst}) +++ $free_list($free_tag(v_tag)*{v_tag <- tag_lst}) +++ $free_list($free_global(v_global)*{v_global <- global_lst}) +++ $free_list($free_mem(v_mem)*{v_mem <- mem_lst}) +++ $free_list($free_table(v_table)*{v_table <- table_lst}) +++ $free_list($free_func(v_func)*{v_func <- func_lst}) +++ $free_list($free_data(v_data)*{v_data <- data_lst}) +++ $free_list($free_elem(v_elem)*{v_elem <- elem_lst}) +++ $free_opt($free_start(v_start)?{v_start <- start_opt}) +++ $free_list($free_import(v_import)*{v_import <- import_lst}) +++ $free_list($free_export(v_export)*{v_export <- export_lst}) + rule fun_free_module_case_0{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, var_21_lst : free*, var_20 : free, var_19_lst : free*, var_18 : free, var_17_opt : free?, var_16 : free, var_15_lst : free*, var_14 : free, var_13_lst : free*, var_12 : free, var_11_lst : free*, var_10 : free, var_9_lst : free*, var_8 : free, var_7_lst : free*, var_6 : free, var_5_lst : free*, var_4 : free, var_3_lst : free*, var_2 : free, var_1_lst : free*, var_0 : free}: + `%%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst), var_0 +++ var_2 +++ var_4 +++ var_6 +++ var_8 +++ var_10 +++ var_12 +++ var_14 +++ var_16 +++ var_18 +++ var_20) + -- if (|var_21_lst| = |export_lst|) + -- (fun_free_export: `%%`(v_export, var_21))*{var_21 <- var_21_lst, v_export <- export_lst} + -- fun_free_list: `%%`(var_21_lst, var_20) + -- if (|var_19_lst| = |import_lst|) + -- (fun_free_import: `%%`(v_import, var_19))*{var_19 <- var_19_lst, v_import <- import_lst} + -- fun_free_list: `%%`(var_19_lst, var_18) + -- if ((var_17_opt = ?()) <=> (start_opt = ?())) + -- (fun_free_start: `%%`(v_start, var_17))?{var_17 <- var_17_opt, v_start <- start_opt} + -- fun_free_opt: `%%`(var_17_opt, var_16) + -- if (|var_15_lst| = |elem_lst|) + -- (fun_free_elem: `%%`(v_elem, var_15))*{var_15 <- var_15_lst, v_elem <- elem_lst} + -- fun_free_list: `%%`(var_15_lst, var_14) + -- if (|var_13_lst| = |data_lst|) + -- (fun_free_data: `%%`(v_data, var_13))*{var_13 <- var_13_lst, v_data <- data_lst} + -- fun_free_list: `%%`(var_13_lst, var_12) + -- if (|var_11_lst| = |func_lst|) + -- (fun_free_func: `%%`(v_func, var_11))*{var_11 <- var_11_lst, v_func <- func_lst} + -- fun_free_list: `%%`(var_11_lst, var_10) + -- if (|var_9_lst| = |table_lst|) + -- (fun_free_table: `%%`(v_table, var_9))*{var_9 <- var_9_lst, v_table <- table_lst} + -- fun_free_list: `%%`(var_9_lst, var_8) + -- if (|var_7_lst| = |mem_lst|) + -- (fun_free_mem: `%%`(v_mem, var_7))*{var_7 <- var_7_lst, v_mem <- mem_lst} + -- fun_free_list: `%%`(var_7_lst, var_6) + -- if (|var_5_lst| = |global_lst|) + -- (fun_free_global: `%%`(v_global, var_5))*{var_5 <- var_5_lst, v_global <- global_lst} + -- fun_free_list: `%%`(var_5_lst, var_4) + -- if (|var_3_lst| = |tag_lst|) + -- (fun_free_tag: `%%`(v_tag, var_3))*{var_3 <- var_3_lst, v_tag <- tag_lst} + -- fun_free_list: `%%`(var_3_lst, var_2) + -- if (|var_1_lst| = |type_lst|) + -- (fun_free_type: `%%`(v_type, var_1))*{var_1 <- var_1_lst, v_type <- type_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $funcidx_module(v_module : module) : funcidx* +relation fun_funcidx_module: `%%`(module, funcidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{v_module : module}(v_module) = $free_module(v_module).FUNCS_free + rule fun_funcidx_module_case_0{v_module : module, var_0 : free}: + `%%`(v_module, var_0.FUNCS_free) + -- fun_free_module: `%%`(v_module, var_0) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec -def $dataidx_funcs(var_0 : func*) : dataidx* +relation fun_dataidx_funcs: `%%`(func*, dataidx*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $dataidx_funcs{func_lst : func*}(func_lst) = $free_list($free_func(v_func)*{v_func <- func_lst}).DATAS_free + rule fun_dataidx_funcs_case_0{func_lst : func*, var_1_lst : free*, var_0 : free}: + `%%`(func_lst, var_0.DATAS_free) + -- if (|var_1_lst| = |func_lst|) + -- (fun_free_func: `%%`(v_func, var_1))*{var_1 <- var_1_lst, v_func <- func_lst} + -- fun_free_list: `%%`(var_1_lst, var_0) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax init = @@ -5171,55 +6090,87 @@ relation wf_context: `%`(context) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 -def $with_locals(v_context : context, var_0 : localidx*, var_1 : localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 - def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 - def $with_locals{C : context, x_1 : uN, x_lst : idx*, lct_1 : localtype, lct_lst : localtype*}(C, [x_1] ++ x_lst, [lct_1] ++ lct_lst) = $with_locals(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x_lst, lct_lst) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 +relation fun_with_locals: `%%%%`(context, localidx*, localtype*, context) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_0{C : context}: + `%%%%`(C, [], [], C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_1{C : context, x_1 : uN, x_lst : idx*}: + `%%%%`(C, [x_1] ++ x_lst, [], C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_2{C : context, lct_1 : localtype, lct_lst : localtype*}: + `%%%%`(C, [], [lct_1] ++ lct_lst, C) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.6-46.18 + rule fun_with_locals_case_3{C : context, x_1 : uN, x_lst : idx*, lct_1 : localtype, lct_lst : localtype*, var_0 : context}: + `%%%%`(C, [x_1] ++ x_lst, [lct_1] ++ lct_lst, var_0) + -- fun_with_locals: `%%%%`(C[LOCALS_context[$proj_uN_0(x_1).0] = lct_1], x_lst, lct_lst, var_0) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 -def $clos_deftypes(var_0 : deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 - def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 - def $clos_deftypes{dt_lst : deftype*, dt_n : deftype, dt'_lst : deftype*}(dt_lst ++ [dt_n]) = dt'_lst ++ [$subst_all_deftype(dt_n, $typeuse_deftype(dt')*{dt' <- dt'_lst})] - -- if (dt'_lst = $clos_deftypes(dt_lst)) +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 +relation fun_clos_deftypes: `%%`(deftype*, deftype*) + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 + rule fun_clos_deftypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:61.6-61.20 + rule fun_clos_deftypes_case_1{dt_lst : deftype*, dt_n : deftype, dt'_lst : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%`(dt_lst ++ [dt_n], dt'_lst ++ [var_0]) + -- fun_clos_deftypes: `%%`(dt_lst, var_1) + -- fun_subst_all_deftype: `%%%`(dt_n, $typeuse_deftype(dt')*{dt' <- dt'_lst}, var_0) + -- where dt'_lst = var_1 {dt'_lst} } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_valtype(v_context : context, v_valtype : valtype) : valtype +relation fun_clos_valtype: `%%%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_valtype{C : context, t : valtype, dt_lst : deftype*}(C, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_valtype_case_0{C : context, t : valtype, dt_lst : deftype*, var_1 : deftype*, var_0 : valtype}: + `%%%`(C, t, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = var_1 {dt_lst} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_deftype(v_context : context, v_deftype : deftype) : deftype +relation fun_clos_deftype: `%%%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftype{C : context, dt : deftype, dt'_lst : deftype*}(C, dt) = $subst_all_deftype(dt, $typeuse_deftype(dt')*{dt' <- dt'_lst}) - -- if (dt'_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_deftype_case_0{C : context, dt : deftype, dt'_lst : deftype*, var_1 : deftype*, var_0 : deftype}: + `%%%`(C, dt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_deftype: `%%%`(dt, $typeuse_deftype(dt')*{dt' <- dt'_lst}, var_0) + -- where dt'_lst = var_1 {dt'_lst} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_tagtype(v_context : context, v_tagtype : tagtype) : tagtype +relation fun_clos_tagtype: `%%%`(context, tagtype, tagtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_tagtype{C : context, jt : typeuse, dt_lst : deftype*}(C, jt) = $subst_all_tagtype(jt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_tagtype_case_0{C : context, jt : typeuse, dt_lst : deftype*, var_1 : deftype*, var_0 : tagtype}: + `%%%`(C, jt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_tagtype: `%%%`(jt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = var_1 {dt_lst} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_externtype(v_context : context, v_externtype : externtype) : externtype +relation fun_clos_externtype: `%%%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_externtype{C : context, xt : externtype, dt_lst : deftype*}(C, xt) = $subst_all_externtype(xt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_externtype_case_0{C : context, xt : externtype, dt_lst : deftype*, var_1 : deftype*, var_0 : externtype}: + `%%%`(C, xt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_externtype: `%%%`(xt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = var_1 {dt_lst} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec -def $clos_moduletype(v_context : context, v_moduletype : moduletype) : moduletype +relation fun_clos_moduletype: `%%%`(context, moduletype, moduletype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_moduletype{C : context, mmt : moduletype, dt_lst : deftype*}(C, mmt) = $subst_all_moduletype(mmt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = $clos_deftypes(C.TYPES_context)) + rule fun_clos_moduletype_case_0{C : context, mmt : moduletype, dt_lst : deftype*, var_1 : deftype*, var_0 : moduletype}: + `%%%`(C, mmt, var_0) + -- fun_clos_deftypes: `%%`(C.TYPES_context, var_1) + -- fun_subst_all_moduletype: `%%%`(mmt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = var_1 {dt_lst} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -5281,10 +6232,11 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule mk_Expand{v_deftype : deftype, v_comptype : comptype}: + rule mk_Expand{v_deftype : deftype, v_comptype : comptype, var_0 : comptype}: `%~~%`(v_deftype, v_comptype) + -- fun_expanddt: `%%`(v_deftype, var_0) -- wf_comptype: `%`(v_comptype) - -- if ($expanddt(v_deftype) = v_comptype) + -- if (var_0 = v_comptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -5303,13 +6255,22 @@ def $before(v_typeuse : typeuse, v_typeidx : typeidx, nat : nat) : bool def $before{j : nat, x : uN, i : nat}(REC_typeuse(j), x, i) = (j < i) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht(v_context : context, v_heaptype : heaptype) : subtype +relation fun_unrollht: `%%%`(context, heaptype, subtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{v_rectype : rectype, v_n : n, C : context}(C, _DEF_heaptype(v_rectype, v_n)) = $unrolldt(_DEF_deftype(v_rectype, v_n)) + rule fun_unrollht_case_0{v_rectype : rectype, v_n : n, C : context, var_0 : subtype}: + `%%%`(C, _DEF_heaptype(v_rectype, v_n), var_0) + -- fun_unrolldt: `%%`(_DEF_deftype(v_rectype, v_n), var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, v_typeidx : uN}(C, _IDX_heaptype(v_typeidx)) = $unrolldt(C.TYPES_context[$proj_uN_0(v_typeidx).0]) + rule fun_unrollht_case_1{C : context, v_typeidx : uN, var_0 : subtype}: + `%%%`(C, _IDX_heaptype(v_typeidx), var_0) + -- if ($proj_uN_0(v_typeidx).0 < |C.TYPES_context|) + -- fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(v_typeidx).0], var_0) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : nat}(C, REC_heaptype(i)) = C.RECS_context[i] + rule fun_unrollht_case_2{C : context, i : nat}: + `%%%`(C, REC_heaptype(i), C.RECS_context[i]) + -- if (i < |C.RECS_context|) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -5449,8 +6410,11 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 - rule mk_Subtype_ok{C : context, x_lst : idx*, v_comptype : comptype, x_0 : idx, x'_lst_lst : idx**, comptype'_lst : comptype*}: + rule mk_Subtype_ok{C : context, x_lst : idx*, v_comptype : comptype, x_0 : idx, x'_lst_lst : idx**, comptype'_lst : comptype*, var_0_lst : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype), OK_oktypeidx(x_0)) + -- if (|var_0_lst| = |x_lst|) + -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} + -- (fun_unrolldt: `%%`(C.TYPES_context[$proj_uN_0(x).0], var_0))*{var_0 <- var_0_lst, x <- x_lst} -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, v_comptype)) -- wf_oktypeidx: `%`(OK_oktypeidx(x_0)) @@ -5458,9 +6422,9 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- (wf_subtype: `%`(SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{comptype' <- comptype'_lst, x'_lst <- x'_lst_lst} -- if (|x_lst| <= 1) -- (if ($proj_uN_0(x).0 < $proj_uN_0(x_0).0))*{x <- x_lst} - -- if (|comptype'_lst| = |x_lst|) - -- (if ($proj_uN_0(x).0 < |C.TYPES_context|))*{x <- x_lst} - -- (if ($unrolldt(C.TYPES_context[$proj_uN_0(x).0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{comptype' <- comptype'_lst, x <- x_lst, x'_lst <- x'_lst_lst} + -- if (|var_0_lst| = |comptype'_lst|) + -- if (|var_0_lst| = |x'_lst_lst|) + -- (if (var_0 = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- x'_lst}, comptype')))*{var_0 <- var_0_lst, comptype' <- comptype'_lst, x'_lst <- x'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} @@ -5495,8 +6459,10 @@ relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 - rule mk_Subtype_ok2{C : context, typeuse_lst : typeuse*, compttype : comptype, x : idx, i : nat, typeuse'_lst_lst : typeuse**, comptype'_lst : comptype*, v_comptype : comptype}: + rule mk_Subtype_ok2{C : context, typeuse_lst : typeuse*, compttype : comptype, x : idx, i : nat, typeuse'_lst_lst : typeuse**, comptype'_lst : comptype*, v_comptype : comptype, var_0_lst : subtype*}: `%|-%:%`(C, SUB_subtype(?(FINAL_final), typeuse_lst, compttype), OK_oktypeidxnat(x, i)) + -- if (|var_0_lst| = |typeuse_lst|) + -- (fun_unrollht: `%%%`(C, $heaptype_typeuse(v_typeuse), var_0))*{var_0 <- var_0_lst, v_typeuse <- typeuse_lst} -- wf_context: `%`(C) -- wf_comptype: `%`(v_comptype) -- wf_subtype: `%`(SUB_subtype(?(FINAL_final), typeuse_lst, compttype)) @@ -5505,8 +6471,9 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) -- (wf_subtype: `%`(SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} -- if (|typeuse_lst| <= 1) -- (if $before(v_typeuse, x, i))*{v_typeuse <- typeuse_lst} - -- if (|comptype'_lst| = |typeuse_lst|) - -- (if ($unrollht(C, $heaptype_typeuse(v_typeuse)) = SUB_subtype(?(), typeuse'_lst, comptype')))*{comptype' <- comptype'_lst, v_typeuse <- typeuse_lst, typeuse'_lst <- typeuse'_lst_lst} + -- if (|var_0_lst| = |comptype'_lst|) + -- if (|var_0_lst| = |typeuse'_lst_lst|) + -- (if (var_0 = SUB_subtype(?(), typeuse'_lst, comptype')))*{var_0 <- var_0_lst, comptype' <- comptype'_lst, typeuse'_lst <- typeuse'_lst_lst} -- Comptype_ok: `%|-%:OK`(C, v_comptype) -- (Comptype_sub: `%|-%<:%`(C, v_comptype, comptype'))*{comptype' <- comptype'_lst} @@ -5572,17 +6539,20 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 - rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: + rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype, var_1 : deftype, var_0 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_clos_deftype: `%%%`(C, deftype_2, var_1) + -- fun_clos_deftype: `%%%`(C, deftype_1, var_0) -- wf_context: `%`(C) - -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) + -- if (var_0 = var_1) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 - rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, final_opt : final?, typeuse_lst : typeuse*, ct : comptype, i : nat}: + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, final_opt : final?, typeuse_lst : typeuse*, ct : comptype, i : nat, var_0 : subtype}: `%|-%<:%`(C, deftype_1, deftype_2) + -- fun_unrolldt: `%%`(deftype_1, var_0) -- wf_context: `%`(C) -- wf_subtype: `%`(SUB_subtype(final_opt, typeuse_lst, ct)) - -- if ($unrolldt(deftype_1) = SUB_subtype(final_opt, typeuse_lst, ct)) + -- if (var_0 = SUB_subtype(final_opt, typeuse_lst, ct)) -- if (i < |typeuse_lst|) -- Heaptype_sub: `%|-%<:%`(C, $heaptype_typeuse(typeuse_lst[i]), $heaptype_deftype(deftype_2)) @@ -6104,8 +7074,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_catch(x, l)) -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst), C.LABELS_context[$proj_uN_0(l).0]) @@ -6115,8 +7086,9 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- wf_context: `%`(C) -- wf_catch: `%`(CATCH_REF_catch(x, l)) -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype(t_lst ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) @@ -6137,35 +7109,55 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- Resulttype_sub: `%|-%<:%`(C, mk_list_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[$proj_uN_0(l).0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec -def $default_(v_valtype : valtype) : val? +relation fun_default_: `%%`(valtype, val?) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I32_valtype) = ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) + rule fun_default__case_0: + `%%`(I32_valtype, ?(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0))))) -- wf_val: `%`(CONST_val($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(I64_valtype) = ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0)))) + rule fun_default__case_1: + `%%`(I64_valtype, ?(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0))))) -- wf_val: `%`(CONST_val($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, mk_uN_uN(0)))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(F32_valtype) = ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + rule fun_default__case_2{var_0 : fN}: + `%%`(F32_valtype, ?(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(F64_valtype) = ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) - -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + rule fun_default__case_3{var_0 : fN}: + `%%`(F64_valtype, ?(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0)))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_val: `%`(CONST_val($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_(V128_valtype) = ?(VCONST_val(V128_vectype, mk_uN_vec_(0))) + rule fun_default__case_4: + `%%`(V128_valtype, ?(VCONST_val(V128_vectype, mk_uN_vec_(0)))) -- wf_val: `%`(VCONST_val(V128_vectype, mk_uN_vec_(0))) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF_NULL_val(ht)) + rule fun_default__case_5{ht : heaptype}: + `%%`(REF_valtype(?(NULL_null), ht), ?(REF_NULL_val(ht))) -- wf_val: `%`(REF_NULL_val(ht)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + rule fun_default__case_6{ht : heaptype}: + `%%`(REF_valtype(?(), ht), ?()) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule fun_default__case_7: + `%%`(BOT_valtype, ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule mk_Defaultable{t : valtype}: + rule mk_Defaultable{t : valtype, var_0 : val?}: `|-%DEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) -- wf_valtype: `%`(t) - -- if ($default_(t) =/= ?()) + -- if (var_0 =/= ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) @@ -6177,9 +7169,11 @@ relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) -- if (v_m < (2 ^ $size($numtype_addrtype(at)))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -def $is_packtype(v_storagetype : storagetype) : bool +relation fun_is_packtype: `%%`(storagetype, bool) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = $storagetype_valtype($unpack(zt))) + rule fun_is_packtype_case_0{zt : storagetype, var_0 : valtype}: + `%%`(zt, (zt = $storagetype_valtype(var_0))) + -- fun_unpack: `%%`(zt, var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -6316,12 +7310,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [REF_valtype(?(NULL_null), ht)])) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 - rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype, var_0 : reftype}: + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(var_0)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_instr(l, rt_1, rt_2)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype($diffrt(rt_1, rt_2))]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(var_0)]))) -- if ($proj_uN_0(l).0 < |C.LABELS_context|) -- if (C.LABELS_context[$proj_uN_0(l).0] = mk_list_resulttype(t_lst ++ [$valtype_reftype(rt)])) -- Reftype_ok: `%|-%:OK`(C, rt_1) @@ -6330,8 +7325,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 - rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype}: + rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, t_lst : valtype*, rt : reftype, var_0 : reftype}: `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), mk_instrtype_instrtype(mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_1)]), [], mk_list_resulttype(t_lst ++ [$valtype_reftype(rt_2)]))) + -- fun_diffrt: `%%%`(rt_1, rt_2, var_0) -- wf_context: `%`(C) -- wf_reftype: `%`(rt) -- wf_instr: `%`(BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)) @@ -6341,7 +7337,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) + -- Reftype_sub: `%|-%<:%`(C, var_0, rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, t_1_lst : valtype*, t_2_lst : valtype*}: @@ -6446,8 +7442,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst ++ t_lst), [], mk_list_resulttype(t_2_lst))) -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- if ($as_deftype(C.TAGS_context[$proj_uN_0(x).0]) =/= ?()) -- if ($proj_uN_0(x).0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[$proj_uN_0(x).0]), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- Expand: `%~~%`(!($as_deftype(C.TAGS_context[$proj_uN_0(x).0])), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- Instrtype_ok: `%|-%:OK`(C, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 @@ -6548,46 +7545,53 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%|-%:%`(C, STRUCT_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule struct_new{C : context, x : idx, zt_lst : storagetype*, mut_opt_lst : mut?*, var_0_lst : valtype*}: + `%|-%:%`(C, STRUCT_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype(var_0_lst), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|var_0_lst| = |zt_lst|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- var_0_lst, zt <- zt_lst} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT_NEW_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)*{zt <- zt_lst}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(var_0_lst), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*}: + rule struct_new_default{C : context, x : idx, mut_opt_lst : mut?*, zt_lst : storagetype*, var_0_lst : valtype*}: `%|-%:%`(C, STRUCT_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- if (|var_0_lst| = |zt_lst|) + -- (fun_unpack: `%%`(zt, var_0))*{var_0 <- var_0_lst, zt <- zt_lst} -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT_NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- zt_lst} + -- (Defaultable: `|-%DEFAULTABLE`(var_0))*{var_0 <- var_0_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 - rule struct_get{C : context, sx_opt : sx?, x : idx, i : u32, zt : storagetype, ft_lst : fieldtype*, mut_opt : mut?}: - `%|-%:%`(C, STRUCT_GET_instr(sx_opt, x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) + rule struct_get{C : context, sx_opt : sx?, x : idx, i : u32, zt : storagetype, ft_lst : fieldtype*, mut_opt : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, STRUCT_GET_instr(sx_opt, x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT_GET_instr(sx_opt, x, i)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], mk_list_resulttype([var_0]))) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(mut_opt, zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], STRUCT_comptype(mk_list_list(ft_lst))) -- if ($proj_uN_0(i).0 < |ft_lst|) -- if (ft_lst[$proj_uN_0(i).0] = mk_fieldtype_fieldtype(mut_opt, zt)) - -- if ((sx_opt = ?()) <=> $is_packtype(zt)) + -- if ((sx_opt = ?()) <=> var_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct_set{C : context, x : idx, i : u32, zt : storagetype, ft_lst : fieldtype*}: - `%|-%:%`(C, STRUCT_SET_instr(x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) + rule struct_set{C : context, x : idx, i : u32, zt : storagetype, ft_lst : fieldtype*, var_0 : valtype}: + `%|-%:%`(C, STRUCT_SET_instr(x, i), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], mk_list_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(STRUCT_SET_instr(x, i)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], mk_list_resulttype([]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) var_0]), [], mk_list_resulttype([]))) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(ft_lst))) -- wf_fieldtype: `%`(mk_fieldtype_fieldtype(?(MUT_mut), zt)) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) @@ -6596,32 +7600,35 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (ft_lst[$proj_uN_0(i).0] = mk_fieldtype_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array_new{C : context, x : idx, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, ARRAY_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule array_new{C : context, x : idx, zt : storagetype, mut_opt : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY_NEW_instr(x), mk_instrtype_instrtype(mk_list_resulttype([var_0 I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY_NEW_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$unpack(zt) I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([var_0 I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array_new_default{C : context, x : idx, mut_opt : mut?, zt : storagetype}: + rule array_new_default{C : context, x : idx, mut_opt : mut?, zt : storagetype, var_0 : valtype}: `%|-%:%`(C, ARRAY_NEW_DEFAULT_instr(x), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY_NEW_DEFAULT_instr(x)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`(var_0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array_new_fixed{C : context, x : idx, v_n : n, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)), mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule array_new_fixed{C : context, x : idx, v_n : n, zt : storagetype, mut_opt : mut?, var_0 : valtype}: + `%|-%:%`(C, ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)), mk_instrtype_instrtype(mk_list_resulttype(var_0^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype($unpack(zt)^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(var_0^v_n{}), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) @@ -6639,35 +7646,39 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[$proj_uN_0(y).0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array_new_data{C : context, x : idx, y : idx, mut_opt : mut?, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: + rule array_new_data{C : context, x : idx, y : idx, mut_opt : mut?, zt : storagetype, v_numtype : numtype, v_vectype : vectype, var_0 : valtype}: `%|-%:%`(C, ARRAY_NEW_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY_NEW_DATA_instr(x, y)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) - -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) + -- if ((var_0 = $valtype_numtype(v_numtype)) \/ (var_0 = $valtype_vectype(v_vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 - rule array_get{C : context, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: - `%|-%:%`(C, ARRAY_GET_instr(sx_opt, x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) + rule array_get{C : context, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?, var_1 : bool, var_0 : valtype}: + `%|-%:%`(C, ARRAY_GET_instr(sx_opt, x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([var_0]))) + -- fun_is_packtype: `%%`(zt, var_1) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY_GET_instr(sx_opt, x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([$unpack(zt)]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], mk_list_resulttype([var_0]))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) - -- if ((sx_opt = ?()) <=> $is_packtype(zt)) + -- if ((sx_opt = ?()) <=> var_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array_set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) + rule array_set{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY_SET_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], mk_list_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY_SET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], mk_list_resulttype([]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0]), [], mk_list_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) @@ -6680,11 +7691,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], mk_list_resulttype([I32_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array_fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) + rule array_fill{C : context, x : idx, zt : storagetype, var_0 : valtype}: + `%|-%:%`(C, ARRAY_FILL_instr(x), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], mk_list_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY_FILL_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], mk_list_resulttype([]))) + -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype var_0 I32_valtype]), [], mk_list_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) @@ -6716,15 +7728,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Storagetype_sub: `%|-%<:%`(C, $storagetype_reftype(C.ELEMS_context[$proj_uN_0(y).0]), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array_init_data{C : context, x : idx, y : idx, zt : storagetype, v_numtype : numtype, v_vectype : vectype}: + rule array_init_data{C : context, x : idx, y : idx, zt : storagetype, v_numtype : numtype, v_vectype : vectype, var_0 : valtype}: `%|-%:%`(C, ARRAY_INIT_DATA_instr(x, y), mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) + -- fun_unpack: `%%`(zt, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(ARRAY_INIT_DATA_instr(x, y)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], mk_list_resulttype([]))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) -- if ($proj_uN_0(x).0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[$proj_uN_0(x).0], ARRAY_comptype(mk_fieldtype_fieldtype(?(MUT_mut), zt))) - -- if (($unpack(zt) = $valtype_numtype(v_numtype)) \/ ($unpack(zt) = $valtype_vectype(v_vectype))) + -- if ((var_0 = $valtype_numtype(v_numtype)) \/ (var_0 = $valtype_vectype(v_vectype))) -- if ($proj_uN_0(y).0 < |C.DATAS_context|) -- if (C.DATAS_context[$proj_uN_0(y).0] = OK_datatype) @@ -7203,12 +8216,13 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 - rule vshuffle{C : context, sh : bshape, i_lst : laneidx*}: + rule vshuffle{C : context, sh : bshape, i_lst : laneidx*, var_0 : dim}: `%|-%:%`(C, VSHUFFLE_instr(sh, i_lst), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) + -- fun_dim: `%%`($proj_bshape_0(sh).0, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype V128_valtype]), [], mk_list_resulttype([V128_valtype]))) - -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0($fun_dim($proj_bshape_0(sh).0)).0)))*{i <- i_lst} + -- (if ($proj_uN_0(i).0 < (2 * $proj_dim_0(var_0).0)))*{i <- i_lst} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: @@ -7218,20 +8232,22 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([$valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 - rule vextract_lane{C : context, sh : shape, sx_opt : sx?, i : laneidx}: + rule vextract_lane{C : context, sh : shape, sx_opt : sx?, i : laneidx, var_0 : dim}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx_opt, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) + -- fun_dim: `%%`(sh, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VEXTRACT_LANE_instr(sh, sx_opt, i)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype]), [], mk_list_resulttype([$valtype_numtype($unpackshape(sh))]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 - rule vreplace_lane{C : context, sh : shape, i : laneidx}: + rule vreplace_lane{C : context, sh : shape, i : laneidx, var_0 : dim}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) + -- fun_dim: `%%`(sh, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(VREPLACE_LANE_instr(sh, i)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([V128_valtype $valtype_numtype($unpackshape(sh))]), [], mk_list_resulttype([V128_valtype]))) - -- if ($proj_uN_0(i).0 < $proj_dim_0($fun_dim(sh)).0) + -- if ($proj_uN_0(i).0 < $proj_dim_0(var_0).0) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__}: @@ -7277,8 +8293,9 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:617.1-621.82 - rule seq{C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*}: + rule seq{C : context, instr_1 : instr, instr_2_lst : instr*, t_1_lst : valtype*, x_1_lst : idx*, x_2_lst : idx*, t_3_lst : valtype*, t_2_lst : valtype*, init_lst : init*, t_lst : valtype*, var_0 : context}: `%|-%:%`(C, [instr_1] ++ instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), x_1_lst ++ x_2_lst, mk_list_resulttype(t_3_lst))) + -- fun_with_locals: `%%%%`(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst}, var_0) -- wf_context: `%`(C) -- wf_instr: `%`(instr_1) -- (wf_instr: `%`(instr_2))*{instr_2 <- instr_2_lst} @@ -7292,7 +8309,7 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- if (|init_lst| = |x_1_lst|) -- (if ($proj_uN_0(x_1).0 < |C.LOCALS_context|))*{x_1 <- x_1_lst} -- (if (C.LOCALS_context[$proj_uN_0(x_1).0] = mk_localtype_localtype(v_init, t)))*{v_init <- init_lst, t <- t_lst, x_1 <- x_1_lst} - -- Instrs_ok: `%|-%:%`($with_locals(C, x_1_lst, mk_localtype_localtype(SET_init, t)*{t <- t_lst}), instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) + -- Instrs_ok: `%|-%:%`(var_0, instr_2_lst, mk_instrtype_instrtype(mk_list_resulttype(t_2_lst), x_2_lst, mk_list_resulttype(t_3_lst))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:623.1-627.33 rule sub{C : context, instr_lst : instr*, it' : instrtype, it : instrtype}: @@ -7329,10 +8346,11 @@ relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - rule mk_Nondefaultable{t : valtype}: + rule mk_Nondefaultable{t : valtype, var_0 : val?}: `|-%NONDEFAULTABLE`(t) + -- fun_default_: `%%`(t, var_0) -- wf_valtype: `%`(t) - -- if ($default_(t) = ?()) + -- if (var_0 = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) @@ -7451,20 +8469,22 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Type_ok{C : context, v_rectype : rectype, dt_lst : deftype*, x : idx}: + rule mk_Type_ok{C : context, v_rectype : rectype, dt_lst : deftype*, x : idx, var_0 : deftype*}: `%|-%:%`(C, TYPE_type(v_rectype), dt_lst) + -- fun_rolldt: `%%%`(x, v_rectype, var_0) -- wf_context: `%`(C) -- wf_context: `%`({TYPES dt_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- wf_oktypeidx: `%`(OK_oktypeidx(x)) -- if ($proj_uN_0(x).0 = |C.TYPES_context|) - -- if (dt_lst = $rolldt(x, v_rectype)) + -- if (dt_lst = var_0) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt_lst, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, v_rectype, OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Tag_ok{C : context, v_tagtype : tagtype}: - `%|-%:%`(C, TAG_tag(v_tagtype), $clos_tagtype(C, v_tagtype)) + rule mk_Tag_ok{C : context, v_tagtype : tagtype, var_0 : tagtype}: + `%|-%:%`(C, TAG_tag(v_tagtype), var_0) + -- fun_clos_tagtype: `%%%`(C, v_tagtype, var_0) -- wf_context: `%`(C) -- wf_tag: `%`(TAG_tag(v_tagtype)) -- Tagtype_ok: `%|-%:OK`(C, v_tagtype) @@ -7615,8 +8635,9 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Import_ok{C : context, name_1 : name, name_2 : name, xt : externtype}: - `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) + rule mk_Import_ok{C : context, name_1 : name, name_2 : name, xt : externtype, var_0 : externtype}: + `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), var_0) + -- fun_clos_externtype: `%%%`(C, xt, var_0) -- wf_context: `%`(C) -- wf_import: `%`(IMPORT_import(name_1, name_2, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) @@ -7734,16 +8755,25 @@ relation wf_nonfuncs: `%`(nonfuncs) -- (wf_elem: `%`(v_elem))*{v_elem <- elem_lst} ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec -def $funcidx_nonfuncs(v_nonfuncs : nonfuncs) : funcidx* +relation fun_funcidx_nonfuncs: `%%`(nonfuncs, funcidx*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*}(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst)) = $funcidx_module(MODULE_module([], [], [], global_lst, mem_lst, table_lst, [], [], elem_lst, ?(), [])) + rule fun_funcidx_nonfuncs_case_0{global_lst : global*, mem_lst : mem*, table_lst : table*, elem_lst : elem*, var_0 : funcidx*}: + `%%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst), var_0) + -- fun_funcidx_module: `%%`(MODULE_module([], [], [], global_lst, mem_lst, table_lst, [], [], elem_lst, ?(), []), var_0) -- wf_module: `%`(MODULE_module([], [], [], global_lst, mem_lst, table_lst, [], [], elem_lst, ?(), [])) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*}: - `|-%:%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst), $clos_moduletype(C, mk_moduletype_moduletype(xt_I_lst, xt_E_lst))) + rule mk_Module_ok{type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, C : context, xt_I_lst : externtype*, xt_E_lst : externtype*, dt'_lst : deftype*, C' : context, jt_lst : tagtype*, gt_lst : globaltype*, mt_lst : memtype*, tt_lst : tabletype*, dt_lst : deftype*, ok_lst : datatype*, rt_lst : reftype*, nm_lst : name*, jt_I_lst : tagtype*, mt_I_lst : memtype*, tt_I_lst : tabletype*, gt_I_lst : globaltype*, dt_I_lst : deftype*, x_lst : idx*, var_6 : deftype*, var_5 : tabletype*, var_4 : memtype*, var_3 : globaltype*, var_2 : tagtype*, var_1 : funcidx*, var_0 : moduletype}: + `|-%:%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst), var_0) + -- fun_funcsxt: `%%`(xt_I_lst, var_6) + -- fun_tablesxt: `%%`(xt_I_lst, var_5) + -- fun_memsxt: `%%`(xt_I_lst, var_4) + -- fun_globalsxt: `%%`(xt_I_lst, var_3) + -- fun_tagsxt: `%%`(xt_I_lst, var_2) + -- fun_funcidx_nonfuncs: `%%`(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst), var_1) + -- fun_clos_moduletype: `%%%`(C, mk_moduletype_moduletype(xt_I_lst, xt_E_lst), var_0) -- wf_context: `%`(C) -- wf_context: `%`(C') -- (wf_name: `%`(nm))*{nm <- nm_lst} @@ -7777,12 +8807,12 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if $disjoint_(syntax name, nm_lst) -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I_lst ++ jt_lst, GLOBALS gt_lst, MEMS mt_I_lst ++ mt_lst, TABLES tt_I_lst ++ tt_lst, FUNCS [], DATAS ok_lst, ELEMS rt_lst, LOCALS [], LABELS [], RETURN ?(), REFS []}) -- if (C' = {TYPES dt'_lst, RECS [], TAGS [], GLOBALS gt_I_lst, MEMS [], TABLES [], FUNCS dt_I_lst ++ dt_lst, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x_lst}) - -- if (x_lst = $funcidx_nonfuncs(mk_nonfuncs_nonfuncs(global_lst, mem_lst, table_lst, elem_lst))) - -- if (jt_I_lst = $tagsxt(xt_I_lst)) - -- if (gt_I_lst = $globalsxt(xt_I_lst)) - -- if (mt_I_lst = $memsxt(xt_I_lst)) - -- if (tt_I_lst = $tablesxt(xt_I_lst)) - -- if (dt_I_lst = $funcsxt(xt_I_lst)) + -- if (x_lst = var_1) + -- if (jt_I_lst = var_2) + -- if (gt_I_lst = var_3) + -- if (mt_I_lst = var_4) + -- if (tt_I_lst = var_5) + -- if (dt_I_lst = var_6) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = @@ -7905,60 +8935,80 @@ def $inv_zbytes_(v_storagetype : storagetype, var_0 : byte*) : lit_ def $inv_cbytes_(v_Cnn : Cnn, var_0 : byte*) : lit_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $signed_(v_N : N, nat : nat) : int +relation fun_signed_: `%%%`(N, nat, int) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{v_N : nat, i : nat}(v_N, i) = (i : nat <:> int) + rule fun_signed__case_0{v_N : nat, i : nat}: + `%%%`(v_N, i, (i : nat <:> int)) -- if (i < (2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $signed_{v_N : nat, i : nat}(v_N, i) = ((i : nat <:> int) - ((2 ^ v_N) : nat <:> int)) + rule fun_signed__case_1{v_N : nat, i : nat}: + `%%%`(v_N, i, ((i : nat <:> int) - ((2 ^ v_N) : nat <:> int))) -- if (((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ v_N))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inv_signed_(v_N : N, int : int) : nat +relation fun_inv_signed_: `%%%`(N, int, nat) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{v_N : nat, i : int}(v_N, i) = (i : int <:> nat) + rule fun_inv_signed__case_0{v_N : nat, i : int}: + `%%%`(v_N, i, (i : int <:> nat)) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inv_signed_{v_N : nat, i : int}(v_N, i) = ((i + ((2 ^ v_N) : nat <:> int)) : int <:> nat) + rule fun_inv_signed__case_1{v_N : nat, i : int}: + `%%%`(v_N, i, ((i + ((2 ^ v_N) : nat <:> int)) : int <:> nat)) -- if ((- ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_sx(v_storagetype : storagetype) : sx? +def $fun_sx(v_storagetype : storagetype) : sx?? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(I32_storagetype) = ?() + def $fun_sx(I32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(I64_storagetype) = ?() + def $fun_sx(I64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(F32_storagetype) = ?() + def $fun_sx(F32_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(F64_storagetype) = ?() + def $fun_sx(F64_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(V128_storagetype) = ?() + def $fun_sx(V128_storagetype) = ?(?()) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(I8_storagetype) = ?(S_sx) + def $fun_sx(I8_storagetype) = ?(?(S_sx)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_sx(I16_storagetype) = ?(S_sx) + def $fun_sx(I16_storagetype) = ?(?(S_sx)) + def $fun_sx{x0 : storagetype}(x0) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_zero(v_lanetype : lanetype) : lane_ +relation fun_zero: `%%`(lanetype, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I32_lanetype) = mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0)) + rule fun_zero_case_0: + `%%`(I32_lanetype, mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, mk_uN_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I64_lanetype) = mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0)) + rule fun_zero_case_1: + `%%`(I64_lanetype, mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, mk_uN_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I8_lanetype) = mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0)) + rule fun_zero_case_2: + `%%`(I8_lanetype, mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, mk_uN_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(I16_lanetype) = mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0)) + rule fun_zero_case_3: + `%%`(I16_lanetype, mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0))) -- wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, mk_uN_uN(0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(F32_lanetype) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $fzero($size($numtype_Fnn(F32_Fnn)))))) + rule fun_zero_case_4{var_0 : fN}: + `%%`(F32_lanetype, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F32_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, var_0))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_zero(F64_lanetype) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn))))) - -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $fzero($size($numtype_Fnn(F64_Fnn)))))) + rule fun_zero_case_5{var_0 : fN}: + `%%`(F64_lanetype, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) + -- fun_fzero: `%%`($size($numtype_Fnn(F64_Fnn)), var_0) + -- wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, var_0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $bool(v_bool : bool) : nat @@ -7992,7 +9042,8 @@ def $ineg_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{v_N : nat, i_1 : uN}(v_N, i_1) = (if ($signed_(v_N, $proj_uN_0(i_1).0) >= (0 : nat <:> int)) then i_1 else $ineg_(v_N, i_1)) + def $iabs_{v_N : nat, i_1 : uN, var_0 : int}(v_N, i_1) = (if (var_0 >= (0 : nat <:> int)) then i_1 else $ineg_(v_N, i_1)) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iclz_(v_N : N, v_iN : iN) : iN @@ -8004,13 +9055,18 @@ def $ictz_(v_N : N, v_iN : iN) : iN def $ipopcnt_(v_N : N, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(v_N : N, v_M : M, v_sx : sx, v_iN : iN) : iN +relation fun_iextend_: `%%%%%`(N, M, sx, iN, iN) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, U_sx, i) = mk_uN_iN(($proj_uN_0(i).0 \ (2 ^ v_M))) + rule fun_iextend__case_0{v_N : nat, v_M : nat, i : uN}: + `%%%%%`(v_N, v_M, U_sx, i, mk_uN_iN(($proj_uN_0(i).0 \ (2 ^ v_M)))) -- wf_uN: `%%`(v_N, mk_uN_uN(($proj_uN_0(i).0 \ (2 ^ v_M)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{v_N : nat, v_M : nat, i : uN}(v_N, v_M, S_sx, i) = mk_uN_iN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $signed_(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)))))) + rule fun_iextend__case_1{v_N : nat, v_M : nat, i : uN, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, v_M, S_sx, i, mk_uN_iN(var_0)) + -- fun_signed_: `%%%`(v_M, ($proj_uN_0(i).0 \ (2 ^ v_M)), var_1) + -- fun_inv_signed_: `%%%`(v_N, var_1, var_0) + -- wf_uN: `%%`(v_N, mk_uN_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN @@ -8031,34 +9087,58 @@ def $imul_(v_N : N, v_iN : iN, v_iN_0 : iN) : iN -- wf_uN: `%%`(v_N, mk_uN_uN((($proj_uN_0(i_1).0 * $proj_uN_0(i_2).0) \ (2 ^ v_N)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $idiv_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? +relation fun_idiv_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, mk_uN_iN(0)) = ?() + rule fun_idiv__case_0{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, U_sx, i_1, mk_uN_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(mk_uN_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + rule fun_idiv__case_1{v_N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(v_N, U_sx, i_1, i_2, ?(mk_uN_iN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)))) -- wf_uN: `%%`(v_N, mk_uN_uN(($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, mk_uN_iN(0)) = ?() + rule fun_idiv__case_2{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, S_sx, i_1, mk_uN_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?() - -- if ((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + rule fun_idiv__case_3{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?()) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + -- if (((var_0 : int <:> rat) / (var_1 : int <:> rat)) = ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = ?(mk_uN_iN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $truncz((($signed_(v_N, $proj_uN_0(i_1).0) : int <:> rat) / ($signed_(v_N, $proj_uN_0(i_2).0) : int <:> rat)))))) + rule fun_idiv__case_4{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?(mk_uN_iN(var_0))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $truncz(((var_1 : int <:> rat) / (var_2 : int <:> rat))), var_0) + -- wf_uN: `%%`(v_N, mk_uN_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $irem_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN? +relation fun_irem_: `%%%%%`(N, sx, iN, iN, iN?) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN}(v_N, U_sx, i_1, mk_uN_iN(0)) = ?() + rule fun_irem__case_0{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, U_sx, i_1, mk_uN_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = ?(mk_uN_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + rule fun_irem__case_1{v_N : nat, i_1 : uN, i_2 : uN}: + `%%%%%`(v_N, U_sx, i_1, i_2, ?(mk_uN_iN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))) -- wf_uN: `%%`(v_N, mk_uN_uN(((($proj_uN_0(i_1).0 : nat <:> int) - (($proj_uN_0(i_2).0 * ($truncz((($proj_uN_0(i_1).0 : nat <:> rat) / ($proj_uN_0(i_2).0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN}(v_N, S_sx, i_1, mk_uN_iN(0)) = ?() + rule fun_irem__case_2{v_N : nat, i_1 : uN}: + `%%%%%`(v_N, S_sx, i_1, mk_uN_iN(0), ?()) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int}(v_N, S_sx, i_1, i_2) = ?(mk_uN_iN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(v_N, $proj_uN_0(i_1).0)) /\ (j_2 = $signed_(v_N, $proj_uN_0(i_2).0))) + rule fun_irem__case_3{v_N : nat, i_1 : uN, i_2 : uN, j_1 : int, j_2 : int, var_2 : int, var_1 : int, var_0 : nat}: + `%%%%%`(v_N, S_sx, i_1, i_2, ?(mk_uN_iN(var_0))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))), var_0) + -- wf_uN: `%%`(v_N, mk_uN_uN(var_0)) + -- if ((j_1 = var_1) /\ (j_2 = var_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imin_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8069,7 +9149,9 @@ def $imin_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $imin_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = (if ($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imin_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = (if (var_0 <= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imax_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8080,7 +9162,9 @@ def $imax_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $imax_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = i_2 -- if ($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = (if ($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0)) then i_1 else i_2) + def $imax_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = (if (var_0 >= var_1) then i_1 else i_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8088,8 +9172,11 @@ def $iadd_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int))) -- wf_uN: `%%`(v_N, mk_uN_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 + $proj_uN_0(i_2).0) : nat <:> int)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) + $signed_(v_N, $proj_uN_0(i_2).0)))))) + def $iadd_sat_{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(v_N, S_sx, i_1, i_2) = mk_uN_iN(var_0) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $sat_s_(v_N, (var_1 + var_2)), var_0) + -- wf_uN: `%%`(v_N, mk_uN_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8097,8 +9184,11 @@ def $isub_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_iN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int)))) -- wf_uN: `%%`(v_N, mk_uN_uN($sat_u_(v_N, (($proj_uN_0(i_1).0 : nat <:> int) - ($proj_uN_0(i_2).0 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_iN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0))))) - -- wf_uN: `%%`(v_N, mk_uN_uN($inv_signed_(v_N, $sat_s_(v_N, ($signed_(v_N, $proj_uN_0(i_1).0) - $signed_(v_N, $proj_uN_0(i_2).0)))))) + def $isub_sat_{v_N : nat, i_1 : uN, i_2 : uN, var_2 : int, var_1 : int, var_0 : nat}(v_N, S_sx, i_1, i_2) = mk_uN_iN(var_0) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_2) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_1) + -- fun_inv_signed_: `%%%`(v_N, $sat_s_(v_N, (var_1 - var_2)), var_0) + -- wf_uN: `%%`(v_N, mk_uN_uN(var_0)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : iN @@ -8146,15 +9236,17 @@ def $ibitselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN def $irelaxed_laneselect_(v_N : N, v_iN : iN, v_iN_0 : iN, v_iN_1 : iN) : iN* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $ieqz_(v_N : N, v_iN : iN) : u32 +relation fun_ieqz_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 = 0))) + rule fun_ieqz__case_0{v_N : nat, i_1 : uN}: + `%%%`(v_N, i_1, mk_uN_u32($bool(($proj_uN_0(i_1).0 = 0)))) -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 = 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $inez_(v_N : N, v_iN : iN) : u32 +relation fun_inez_: `%%%`(N, iN, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{v_N : nat, i_1 : uN}(v_N, i_1) = mk_uN_u32($bool(($proj_uN_0(i_1).0 =/= 0))) + rule fun_inez__case_0{v_N : nat, i_1 : uN}: + `%%%`(v_N, i_1, mk_uN_u32($bool(($proj_uN_0(i_1).0 =/= 0)))) -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 =/= 0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -8175,8 +9267,10 @@ def $ilt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 < $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) < $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ilt_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool((var_0 < var_1))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, mk_uN_uN($bool((var_0 < var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 @@ -8184,8 +9278,10 @@ def $igt_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 > $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) > $signed_(v_N, $proj_uN_0(i_2).0))))) + def $igt_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool((var_0 > var_1))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, mk_uN_uN($bool((var_0 > var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 @@ -8193,8 +9289,10 @@ def $ile_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 <= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) <= $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ile_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool((var_0 <= var_1))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, mk_uN_uN($bool((var_0 <= var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 @@ -8202,8 +9300,10 @@ def $ige_(v_N : N, v_sx : sx, v_iN : iN, v_iN_0 : iN) : u32 def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, U_sx, i_1, i_2) = mk_uN_u32($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0))) -- wf_uN: `%%`(32, mk_uN_uN($bool(($proj_uN_0(i_1).0 >= $proj_uN_0(i_2).0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{v_N : nat, i_1 : uN, i_2 : uN}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0)))) - -- wf_uN: `%%`(32, mk_uN_uN($bool(($signed_(v_N, $proj_uN_0(i_1).0) >= $signed_(v_N, $proj_uN_0(i_2).0))))) + def $ige_{v_N : nat, i_1 : uN, i_2 : uN, var_1 : int, var_0 : int}(v_N, S_sx, i_1, i_2) = mk_uN_u32($bool((var_0 >= var_1))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_2).0, var_1) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i_1).0, var_0) + -- wf_uN: `%%`(32, mk_uN_uN($bool((var_0 >= var_1)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(v_N : N, v_fN : fN) : fN* @@ -8314,273 +9414,452 @@ def $narrow__(v_M : M, v_N : N, v_sx : sx, v_iN : iN) : iN def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, v_num_ : num_) : num_ ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lpacknum_(v_lanetype : lanetype, v_num_ : num_) : lane_ +relation fun_lpacknum_: `%%%`(lanetype, num_, lane_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(I32_lanetype, c) = mk_lane__0_lane_(I32_numtype, c) + rule fun_lpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, c, mk_lane__0_lane_(I32_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(I32_numtype), mk_lane__0_lane_(I32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(I64_lanetype, c) = mk_lane__0_lane_(I64_numtype, c) + rule fun_lpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, c, mk_lane__0_lane_(I64_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(I64_numtype), mk_lane__0_lane_(I64_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(F32_lanetype, c) = mk_lane__0_lane_(F32_numtype, c) + rule fun_lpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, c, mk_lane__0_lane_(F32_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(F32_numtype), mk_lane__0_lane_(F32_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : num_}(F64_lanetype, c) = mk_lane__0_lane_(F64_numtype, c) + rule fun_lpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, c, mk_lane__0_lane_(F64_numtype, c)) -- wf_lane_: `%%`($lanetype_numtype(F64_numtype), mk_lane__0_lane_(F64_numtype, c)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : uN}(I8_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + rule fun_lpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) -- wf_lane_: `%%`($lanetype_packtype(I8_packtype), mk_lane__1_lane_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{c : uN}(I16_lanetype, mk_num__0_num_(I32_Inn, c)) = mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + rule fun_lpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_num__0_num_(I32_Inn, c), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) -- wf_lane_: `%%`($lanetype_packtype(I16_packtype), mk_lane__1_lane_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ +relation fun_cpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(I32_storagetype, c) = c + rule fun_cpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(I64_storagetype, c) = c + rule fun_cpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(F32_storagetype, c) = c + rule fun_cpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(F64_storagetype, c) = c + rule fun_cpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : lit_}(V128_storagetype, c) = c + rule fun_cpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : uN}(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c)) + rule fun_cpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) -- wf_lit_: `%%`($storagetype_packtype(I8_packtype), mk_lit__2_lit_(I8_packtype, $wrap__($size($lunpack($lanetype_packtype(I8_packtype))), $psize(I8_packtype), c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cpacknum_{c : uN}(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c))) = mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c)) + rule fun_cpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, c)), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) -- wf_lit_: `%%`($storagetype_packtype(I16_packtype), mk_lit__2_lit_(I16_packtype, $wrap__($size($lunpack($lanetype_packtype(I16_packtype))), $psize(I16_packtype), c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $lunpacknum_(v_lanetype : lanetype, v_lane_ : lane_) : num_ +relation fun_lunpacknum_: `%%%`(lanetype, lane_, num_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(I32_lanetype, mk_lane__0_lane_(I32_numtype, c)) = c + rule fun_lunpacknum__case_0{c : num_}: + `%%%`(I32_lanetype, mk_lane__0_lane_(I32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(I64_lanetype, mk_lane__0_lane_(I64_numtype, c)) = c + rule fun_lunpacknum__case_1{c : num_}: + `%%%`(I64_lanetype, mk_lane__0_lane_(I64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(F32_lanetype, mk_lane__0_lane_(F32_numtype, c)) = c + rule fun_lunpacknum__case_2{c : num_}: + `%%%`(F32_lanetype, mk_lane__0_lane_(F32_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : num_}(F64_lanetype, mk_lane__0_lane_(F64_numtype, c)) = c + rule fun_lunpacknum__case_3{c : num_}: + `%%%`(F64_lanetype, mk_lane__0_lane_(F64_numtype, c), c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : uN}(I8_lanetype, mk_lane__1_lane_(I8_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)) + rule fun_lunpacknum__case_4{c : uN}: + `%%%`(I8_lanetype, mk_lane__1_lane_(I8_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) -- wf_num_: `%%`($lunpack($lanetype_packtype(I8_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{c : uN}(I16_lanetype, mk_lane__1_lane_(I16_packtype, c)) = mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)) + rule fun_lunpacknum__case_5{c : uN}: + `%%%`(I16_lanetype, mk_lane__1_lane_(I16_packtype, c), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) -- wf_num_: `%%`($lunpack($lanetype_packtype(I16_packtype)), mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $cunpacknum_(v_storagetype : storagetype, v_lit_ : lit_) : lit_ +relation fun_cunpacknum_: `%%%`(storagetype, lit_, lit_) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(I32_storagetype, c) = c + rule fun_cunpacknum__case_0{c : lit_}: + `%%%`(I32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(I64_storagetype, c) = c + rule fun_cunpacknum__case_1{c : lit_}: + `%%%`(I64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(F32_storagetype, c) = c + rule fun_cunpacknum__case_2{c : lit_}: + `%%%`(F32_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(F64_storagetype, c) = c + rule fun_cunpacknum__case_3{c : lit_}: + `%%%`(F64_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : lit_}(V128_storagetype, c) = c + rule fun_cunpacknum__case_4{c : lit_}: + `%%%`(V128_storagetype, c, c) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : uN}(I8_storagetype, mk_lit__2_lit_(I8_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c))) + rule fun_cunpacknum__case_5{c : uN}: + `%%%`(I8_storagetype, mk_lit__2_lit_(I8_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I8_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I8_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), $size($lunpack($lanetype_packtype(I8_packtype))), U_sx, c)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{c : uN}(I16_storagetype, mk_lit__2_lit_(I16_packtype, c)) = mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c))) + rule fun_cunpacknum__case_6{c : uN}: + `%%%`(I16_storagetype, mk_lit__2_lit_(I16_packtype, c), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) + -- if ($cunpack($storagetype_packtype(I16_packtype)) =/= ?()) -- wf_lit_: `%%`($storagetype_consttype(!($cunpack($storagetype_packtype(I16_packtype)))), mk_lit__0_lit_(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), $size($lunpack($lanetype_packtype(I16_packtype))), U_sx, c)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_unop_(v_numtype : numtype, v_unop_ : unop_, v_num_ : num_) : num_* +relation fun_unop_: `%%%%`(numtype, unop_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_0{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iclz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_1{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iclz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_2{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ictz_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_3{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ictz_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))] + rule fun_unop__case_4{i : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ipopcnt_($sizenn($numtype_addrtype(I32_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))] + rule fun_unop__case_5{i : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ipopcnt_($sizenn($numtype_addrtype(I64_Inn)), i))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{v_M : nat, i : uN}(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I32_Inn, i)) = [mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iextend_($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i))) + rule fun_unop__case_6{v_M : nat, i : uN, var_0 : uN}: + `%%%%`(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I32_Inn, i), [mk_num__0_num_(I32_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{v_M : nat, i : uN}(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I64_Inn, i)) = [mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))] - -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iextend_($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i))) + rule fun_unop__case_7{v_M : nat, i : uN, var_0 : uN}: + `%%%%`(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(v_M))), mk_num__0_num_(I64_Inn, i), [mk_num__0_num_(I64_Inn, var_0)]) + -- fun_iextend_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_M, S_sx, i, var_0) + -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, var_0)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_8{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_9{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fabs_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_10{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_11{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fneg_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_12{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_13{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsqrt_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_14{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_15{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fceil_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_16{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_17{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ffloor_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_18{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_19{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $ftrunc_($sizenn($numtype_Fnn(F64_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + rule fun_unop__case_20{f : fN}: + `%%%%`(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F32_Fnn, f), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F32_Fnn)), f)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_unop_{f : fN}(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} + rule fun_unop__case_21{f : fN}: + `%%%%`(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn), mk_num__1_num_(F64_Fnn, f), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fnearest_($sizenn($numtype_Fnn(F64_Fnn)), f)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_binop_(v_numtype : numtype, v_binop_ : binop_, v_num_ : num_, v_num__0 : num_) : num_* +relation fun_binop_: `%%%%%`(numtype, binop_, num_, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_0{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iadd_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_1{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iadd_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_2{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $isub_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_3{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $isub_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_4{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $imul_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_5{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $imul_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} + rule fun_binop__case_6{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($idiv_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} + rule fun_binop__case_7{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_idiv_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2))} + rule fun_binop__case_8{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} - -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($irem_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2))} + rule fun_binop__case_9{v_sx : sx, i_1 : uN, i_2 : uN, var_0 : iN?}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift(var_0)}) + -- fun_irem_: `%%%%%`($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, i_2, var_0) + -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift(var_0)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_10{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $iand_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_11{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $iand_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_12{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ior_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_13{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ior_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_14{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ixor_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_15{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ixor_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_16{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishl_($sizenn($numtype_addrtype(I32_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_17{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishl_($sizenn($numtype_addrtype(I64_Inn)), i_1, mk_uN_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_18{v_sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $ishr_($sizenn($numtype_addrtype(I32_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{v_sx : sx, i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))] + rule fun_binop__case_19{v_sx : sx, i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(v_sx)), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $ishr_($sizenn($numtype_addrtype(I64_Inn)), v_sx, i_1, mk_uN_u32($proj_uN_0(i_2).0)))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_20{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotl_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_21{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotl_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2)) = [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))] + rule fun_binop__case_22{i_1 : uN, i_2 : uN}: + `%%%%%`(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn), mk_num__0_num_(I32_Inn, i_1), mk_num__0_num_(I32_Inn, i_2), [mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $irotr_($sizenn($numtype_addrtype(I32_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{i_1 : uN, i_2 : uN}(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2)) = [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))] + rule fun_binop__case_23{i_1 : uN, i_2 : uN}: + `%%%%%`(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn), mk_num__0_num_(I64_Inn, i_1), mk_num__0_num_(I64_Inn, i_2), [mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $irotr_($sizenn($numtype_addrtype(I64_Inn)), i_1, i_2))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_24{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_25{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fadd_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_26{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_27{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fsub_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_28{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_29{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmul_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_30{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_31{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fdiv_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_32{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_33{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmin_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_34{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_35{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fmax_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + rule fun_binop__case_36{f_1 : fN, f_2 : fN}: + `%%%%%`(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, f_2), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F32_Fnn)), f_1, f_2)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_binop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} + rule fun_binop__case_37{f_1 : fN, f_2 : fN}: + `%%%%%`(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $fcopysign_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2)} ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_testop_(v_numtype : numtype, v_testop_ : testop_, v_num_ : num_) : u32 +relation fun_testop_: `%%%%`(numtype, testop_, num_, u32) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_testop_{i : uN}(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I32_Inn)), i) + rule fun_testop__case_0{i : uN, var_0 : u32}: + `%%%%`(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn), mk_num__0_num_(I32_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I32_Inn)), i, var_0) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_testop_{i : uN}(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i)) = $ieqz_($sizenn($numtype_addrtype(I64_Inn)), i) + rule fun_testop__case_1{i : uN, var_0 : u32}: + `%%%%`(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn), mk_num__0_num_(I64_Inn, i), var_0) + -- fun_ieqz_: `%%%`($sizenn($numtype_addrtype(I64_Inn)), i, var_0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fun_relop_(v_numtype : numtype, v_relop_ : relop_, v_num_ : num_, v_num__0 : num_) : u32 @@ -8634,121 +9913,192 @@ def $fun_relop_(v_numtype : numtype, v_relop_ : relop_, v_num_ : num_, v_num__0 def $fun_relop_{f_1 : fN, f_2 : fN}(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, f_2)) = $fge_($sizenn($numtype_Fnn(F64_Fnn)), f_1, f_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $fun_cvtop__(numtype_1 : numtype, numtype_2 : numtype, v_cvtop__ : cvtop__, v_num_ : num_) : num_* +relation fun_cvtop__: `%%%%%`(numtype, numtype, cvtop__, num_, num_*) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] + rule fun_cvtop___case_0{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))] + rule fun_cvtop___case_1{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] + rule fun_cvtop___case_2{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))] + rule fun_cvtop___case_3{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $extend__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + rule fun_cvtop___case_4{i_1 : uN}: + `%%%%%`(I32_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))] + rule fun_cvtop___case_5{i_1 : uN}: + `%%%%%`(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I32_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + rule fun_cvtop___case_6{i_1 : uN}: + `%%%%%`(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I32_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))] + rule fun_cvtop___case_7{i_1 : uN}: + `%%%%%`(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, WRAP_cvtop__Inn_1_Inn_2), mk_num__0_num_(I64_Inn, i_1), [mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, $wrap__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_addrtype(I64_Inn)), i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + rule fun_cvtop___case_8{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + rule fun_cvtop___case_9{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + rule fun_cvtop___case_10{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + rule fun_cvtop___case_11{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + rule fun_cvtop___case_12{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + rule fun_cvtop___case_13{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I32_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I32_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + rule fun_cvtop___case_14{v_sx : sx, f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F32_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + rule fun_cvtop___case_15{v_sx : sx, f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(v_sx)), mk_num__1_num_(F64_Fnn, f_1), mk_num__0_num_(I64_Inn, iter_0)*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))}) -- (wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, iter_0)))*{iter_0 <- lift($trunc_sat__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_addrtype(I64_Inn)), v_sx, f_1))} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] + rule fun_cvtop___case_16{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))] + rule fun_cvtop___case_17{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F32_Fnn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] + rule fun_cvtop___case_18{v_sx : sx, i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I32_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I32_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{v_sx : sx, i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1)) = [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))] + rule fun_cvtop___case_19{v_sx : sx, i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(v_sx)), mk_num__0_num_(I64_Inn, i_1), [mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, $convert__($sizenn1($numtype_addrtype(I64_Inn)), $sizenn2($numtype_Fnn(F64_Fnn)), v_sx, i_1))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_20{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_21{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_22{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_23{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $promote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_24{f_1 : fN}: + `%%%%%`(F32_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + rule fun_cvtop___case_25{f_1 : fN}: + `%%%%%`(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F32_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F32_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_26{f_1 : fN}: + `%%%%%`(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F32_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F32_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1)) = mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + rule fun_cvtop___case_27{f_1 : fN}: + `%%%%%`(F64_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F64_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2), mk_num__1_num_(F64_Fnn, f_1), mk_num__1_num_(F64_Fnn, iter_0)*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)}) -- (wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0)))*{iter_0 <- $demote__($sizenn1($numtype_Fnn(F64_Fnn)), $sizenn2($numtype_Fnn(F64_Fnn)), f_1)} + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))] + rule fun_cvtop___case_28{i_1 : uN}: + `%%%%%`(I32_numtype, F32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I32_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))] + rule fun_cvtop___case_29{i_1 : uN}: + `%%%%%`(I64_numtype, F32_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F32_Fnn), mk_num__0_num_(I64_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F32_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))] + rule fun_cvtop___case_30{i_1 : uN}: + `%%%%%`(I32_numtype, F64_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I32_Inn, i_1), [$reinterpret__($numtype_addrtype(I32_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I32_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, i_1)) -- if ($size($numtype_addrtype(I32_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{i_1 : uN}(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1)) = [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))] + rule fun_cvtop___case_31{i_1 : uN}: + `%%%%%`(I64_numtype, F64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2), mk_num__0_num_(I64_Inn, i_1), [$reinterpret__($numtype_addrtype(I64_Inn), $numtype_Fnn(F64_Fnn), mk_num__0_num_(I64_Inn, i_1))]) -- wf_num_: `%%`($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, i_1)) -- if ($size($numtype_addrtype(I64_Inn)) = $size($numtype_Fnn(F64_Fnn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))] + rule fun_cvtop___case_32{f_1 : fN}: + `%%%%%`(F32_numtype, I32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F32_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))] + rule fun_cvtop___case_33{f_1 : fN}: + `%%%%%`(F64_numtype, I32_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I32_Inn), mk_num__1_num_(F64_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I32_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))] + rule fun_cvtop___case_34{f_1 : fN}: + `%%%%%`(F32_numtype, I64_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F32_Fnn, f_1), [$reinterpret__($numtype_Fnn(F32_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F32_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, f_1)) -- if ($size($numtype_Fnn(F32_Fnn)) = $size($numtype_addrtype(I64_Inn))) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $fun_cvtop__{f_1 : fN}(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1)) = [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))] + rule fun_cvtop___case_35{f_1 : fN}: + `%%%%%`(F64_numtype, I64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2), mk_num__1_num_(F64_Fnn, f_1), [$reinterpret__($numtype_Fnn(F64_Fnn), $numtype_addrtype(I64_Inn), mk_num__1_num_(F64_Fnn, f_1))]) -- wf_num_: `%%`($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, f_1)) -- if ($size($numtype_Fnn(F64_Fnn)) = $size($numtype_addrtype(I64_Inn))) @@ -8759,202 +10109,392 @@ def $lanes_(v_shape : shape, v_vec_ : vec_) : lane_* def $inv_lanes_(v_shape : shape, var_0 : lane_*) : vec_ ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $zeroop(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__) : zero? +relation fun_zeroop: `%%%%`(shape, shape, vcvtop__, zero?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?() + rule fun_zeroop_case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = ?() + rule fun_zeroop_case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = zero_opt + rule fun_zeroop_case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), zero_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + rule fun_zeroop_case_40{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + rule fun_zeroop_case_41{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + rule fun_zeroop_case_42{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?(v_zero) + rule fun_zeroop_case_43{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?(v_zero)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?() + rule fun_zeroop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?()) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $halfop(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__) : half? +relation fun_halfop: `%%%%`(shape, shape, vcvtop__, half?) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx))) = ?(v_half) + rule fun_halfop_case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), ?(v_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx))) = half_opt + rule fun_halfop_case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), half_opt) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I8_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt))) = ?() + rule fun_halfop_case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I16_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + rule fun_halfop_case_40{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + rule fun_halfop_case_41{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + rule fun_halfop_case_42{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat, v_zero : zero}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero))) = ?() + rule fun_halfop_case_43{M_1 : nat, M_2 : nat, v_zero : zero}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(v_zero)), ?()) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_44{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_45{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_46{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{M_1 : nat, M_2 : nat}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) = ?(LOW_half) + rule fun_halfop_case_47{M_1 : nat, M_2 : nat}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), ?(LOW_half)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fun_half(v_half : half, nat : nat, nat_0 : nat) : nat @@ -8972,7 +10512,8 @@ def $iswizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(v_N : N, var_0 : iN*, v_iN : iN) : iN ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if ($signed_(v_N, $proj_uN_0(i).0) < (0 : nat <:> int)) then mk_uN_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, mk_uN_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) + def $irelaxed_swizzle_lane_{v_N : nat, c_lst : iN*, i : uN, var_0 : int}(v_N, c_lst, i) = (if ($proj_uN_0(i).0 < |c_lst|) then c_lst[$proj_uN_0(i).0] else (if (var_0 < (0 : nat <:> int)) then mk_uN_iN(0) else $fun_relaxed2($R_swizzle, syntax iN, mk_uN_iN(0), c_lst[($proj_uN_0(i).0 \ |c_lst|)]))) + -- fun_signed_: `%%%`(v_N, $proj_uN_0(i).0, var_0) -- wf_uN: `%%`(v_N, mk_uN_uN(0)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -8982,29 +10523,29 @@ def $ivunop_(v_shape : shape, def $f_(v_N : N, v_iN : iN) : iN, v_vec_ : vec_) : -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_{v_M : nat, def $f_(v_N : N, v_iN : iN) : iN, v_1 : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : fN*, v_vec_ : vec_) : vec_* @@ -9013,15 +10554,15 @@ def $fvunop_(v_shape : shape, def $f_(v_N : N, v_fN : fN) : fN*, v_vec_ : vec_) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_{v_M : nat, def $f_(v_N : N, v_fN : fN) : fN*, v_1 : uN, c_lst_lst : lane_**, c_1_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))))}*{c_1 <- c_1_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_vec_ : vec_, v_vec__0 : vec_) : vec_* @@ -9031,36 +10572,36 @@ def $ivbinop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_ve -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* @@ -9070,36 +10611,36 @@ def $ivbinopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : i -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst})] -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_* @@ -9108,33 +10649,33 @@ def $ivbinopsxnd_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : iN*, v_sx : sx, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_) : vec_* @@ -9143,17 +10684,17 @@ def $fvbinop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_v -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* @@ -9162,37 +10703,37 @@ def $ivternopnd_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Jnn(I32_Jnn), mk_lane__2_lane_(I32_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_3)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I32_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Jnn(I64_Jnn), mk_lane__2_lane_(I64_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_3)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I64_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Jnn(I8_Jnn), mk_lane__2_lane_(I8_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_3)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I8_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN, v_iN : iN) : iN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Jnn(I16_Jnn), mk_lane__2_lane_(I16_Jnn, iter_0)))*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_3)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_3) {c_3_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__2_lane_(I16_Jnn, iter_0)*{iter_0 <- $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)), !($proj_lane__2(c_3)))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* @@ -9201,19 +10742,19 @@ def $fvternop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Fnn(F32_Fnn), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)) - -- if (c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_3)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_3) {c_3_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN, v_fN : fN) : fN*, v_1 : uN, v_2 : uN, v_3 : uN, c_lst_lst : lane_**, c_1_lst : lane_*, c_2_lst : lane_*, c_3_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst} -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($lanetype_Fnn(F64_Fnn), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)) - -- if (c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_3)) - -- if (c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_3_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_3) {c_3_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, iter_0))*{iter_0 <- $f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))), !($proj_num__1(!($proj_lane__0(c_3)))))}*{c_1 <- c_1_lst, c_2 <- c_2_lst, c_3 <- c_3_lst}) {c_lst_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ @@ -9222,33 +10763,33 @@ def $ivrelop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_iN : iN) : u32, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ @@ -9257,33 +10798,33 @@ def $ivrelopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : i -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_iN : iN) : u32, v_sx : sx, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, mk_uN_iN($proj_uN_0($f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), !($proj_lane__2(c_2)))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_vec_ : vec_, v_vec__0 : vec_) : vec_ @@ -9293,9 +10834,9 @@ def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $sizenn($numtype_Fnn(F32_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F32_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} -- if ($isize(v_Inn) = $fsize(F32_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_{v_M : nat, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_1 : uN, v_2 : uN, v_Inn : addrtype, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M)), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))*{c <- c_lst}) @@ -9303,9 +10844,9 @@ def $fvrelop_(v_shape : shape, def $f_(v_N : N, v_fN : fN, v_fN : fN) : u32, v_v -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(v_Inn), mk_dim_dim(v_M))), mk_lane__0_lane_($numtype_addrtype(v_Inn), mk_num__0_num_(v_Inn, mk_uN_uN($proj_uN_0(c).0)))))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) -- (wf_uN: `%%`(1, mk_uN_uN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0)))*{c_1 <- c_1_lst, c_2 <- c_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $extend__(1, $sizenn($numtype_Fnn(F64_Fnn)), S_sx, mk_uN_iN($proj_uN_0($f_($sizenn($numtype_Fnn(F64_Fnn)), !($proj_num__1(!($proj_lane__0(c_1)))), !($proj_num__1(!($proj_lane__0(c_2)))))).0))*{c_1 <- c_1_lst, c_2 <- c_2_lst} {c_lst} -- if ($isize(v_Inn) = $fsize(F64_Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9315,29 +10856,29 @@ def $ivshiftop_(v_shape : shape, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_{v_M : nat, def $f_(v_N : N, v_iN : iN, v_u32 : u32) : iN, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_vec_ : vec_, v_u32 : u32) : vec_ @@ -9346,63 +10887,74 @@ def $ivshiftopsx_(v_shape : shape, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_{v_M : nat, def $f_(v_N : N, v_sx : sx, v_iN : iN, v_u32 : u32) : iN, v_sx : sx, v_1 : uN, i : uN, c_lst : iN*, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_sx, v_1, i) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)), i)*{c_1 <- c_1_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(v_shape : shape, v_vec_ : vec_) : u32 +relation fun_ivbitmaskop_: `%%%`(shape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_0{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}: + `%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} -- wf_bit: `%`(mk_bit_bit(0)) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I32_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_1{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}: + `%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} -- wf_bit: `%`(mk_bit_bit(0)) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I64_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_2{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}: + `%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} -- wf_bit: `%`(mk_bit_bit(0)) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I8_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), v_1) = $irev_(32, c) + rule fun_ivbitmaskop__case_3{v_M : nat, v_1 : uN, c : uN, c_1_lst : lane_*}: + `%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), v_1, $irev_(32, c)) -- wf_uN: `%%`(32, c) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} -- (wf_bit: `%`(mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)))*{c_1 <- c_1_lst} -- wf_bit: `%`(mk_bit_bit(0)) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} -- if ($ibits_(32, c) = mk_bit_bit($proj_uN_0($ilt_($lsizenn($lanetype_Jnn(I16_Jnn)), S_sx, !($proj_lane__2(c_1)), mk_uN_iN(0))).0)*{c_1 <- c_1_lst} ++ mk_bit_bit(0)^(((32 : nat <:> int) - (v_M : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -9413,75 +10965,86 @@ def $ivswizzlop_(v_shape : shape, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_vec_ -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I32_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I64_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I8_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_{v_M : nat, def $f_(v_N : N, iN*, v_iN : iN) : iN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- where c_lst = $f_($lsizenn($lanetype_Jnn(I16_Jnn)), !($proj_lane__2(c_1))*{c_1 <- c_1_lst}, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivshufflop_(v_shape : shape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_ivshufflop_: `%%%%%`(shape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst) + rule fun_ivshufflop__case_0{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), c_lst)) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- (if ($proj_uN_0(i).0 < |c_1_lst ++ c_2_lst|))*{i <- i_lst} + -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst) + rule fun_ivshufflop__case_1{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), c_lst)) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- (if ($proj_uN_0(i).0 < |c_1_lst ++ c_2_lst|))*{i <- i_lst} + -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst) + rule fun_ivshufflop__case_2{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), c_lst)) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- (if ($proj_uN_0(i).0 < |c_1_lst ++ c_2_lst|))*{i <- i_lst} + -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst) + rule fun_ivshufflop__case_3{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, c_lst : lane_*, c_1_lst : lane_*, c_2_lst : lane_*}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), c_lst)) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c))*{c <- c_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))), c_2))*{c_2 <- c_2_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2)) - -- if (c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst}) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v_2) {c_2_lst} + -- (if ($proj_uN_0(i).0 < |c_1_lst ++ c_2_lst|))*{i <- i_lst} + -- where c_lst = c_1_lst ++ c_2_lst[$proj_uN_0(i).0]*{i <- i_lst} {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(v_vectype : vectype, v_vvunop : vvunop, v_vec_ : vec_) : vec_* @@ -9505,795 +11068,1245 @@ def $vvternop_(v_vectype : vectype, v_vvternop : vvternop, v_vec_ : vec_, v_vec_ def $vvternop_{v_Vnn : vectype, v_1 : uN, v_2 : uN, v_3 : uN}(v_Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(v_Vnn), v_1, v_2, v_3)] ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vunop_(v_shape : shape, v_vunop_ : vunop_, v_vec_ : vec_) : vec_* +relation fun_vunop_: `%%%%`(shape, vunop_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fabs_, v) + rule fun_vunop__case_0{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, ABS_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fabs_, v) + rule fun_vunop__case_1{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, ABS_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fneg_, v) + rule fun_vunop__case_2{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fneg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEG_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fneg_, v) + rule fun_vunop__case_3{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEG_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fneg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v) + rule fun_vunop__case_4{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, SQRT_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v) + rule fun_vunop__case_5{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, SQRT_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsqrt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fceil_, v) + rule fun_vunop__case_6{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fceil_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, CEIL_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fceil_, v) + rule fun_vunop__case_7{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, CEIL_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fceil_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ffloor_, v) + rule fun_vunop__case_8{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ffloor_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, FLOOR_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ffloor_, v) + rule fun_vunop__case_9{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, FLOOR_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ffloor_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v) + rule fun_vunop__case_10{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, TRUNC_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v) + rule fun_vunop__case_11{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, TRUNC_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $ftrunc_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fnearest_, v) + rule fun_vunop__case_12{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F32_Fnn, v_M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fnearest_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEAREST_vunop_Fnn_M), v) = $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fnearest_, v) + rule fun_vunop__case_13{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vunop__1_vunop_(F64_Fnn, v_M, NEAREST_vunop_Fnn_M), v, $fvunop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fnearest_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iabs_, v) + rule fun_vunop__case_14{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iabs_, v) + rule fun_vunop__case_15{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iabs_, v) + rule fun_vunop__case_16{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, ABS_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iabs_, v) + rule fun_vunop__case_17{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, ABS_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iabs_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ineg_, v) + rule fun_vunop__case_18{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ineg_, v) + rule fun_vunop__case_19{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ineg_, v) + rule fun_vunop__case_20{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, NEG_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ineg_, v) + rule fun_vunop__case_21{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, NEG_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ineg_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) + rule fun_vunop__case_22{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I32_Jnn, v_M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) + rule fun_vunop__case_23{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I64_Jnn, v_M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) + rule fun_vunop__case_24{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I8_Jnn, v_M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vunop_{v_M : nat, v : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, POPCNT_vunop_Jnn_M), v) = $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v) + rule fun_vunop__case_25{v_M : nat, v : uN}: + `%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vunop__0_vunop_(I16_Jnn, v_M, POPCNT_vunop_Jnn_M), v, $ivunop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ipopcnt_, v)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vbinop_(v_shape : shape, v_vbinop_ : vbinop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_* +relation fun_vbinop_: `%%%%%`(shape, vbinop_, vec_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_0{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_1{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_2{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2) + rule fun_vbinop__case_3{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_4{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_5{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_6{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2) + rule fun_vbinop__case_7{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_8{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_9{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_10{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2) = $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2) + rule fun_vbinop__case_11{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MUL_vbinop_Jnn_M), v_1, v_2, $ivbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_12{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_13{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_14{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_15{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, ADD_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iadd_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_16{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_17{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_18{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2) + rule fun_vbinop__case_19{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, SUB_SAT_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $isub_sat_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) + rule fun_vbinop__case_20{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) + rule fun_vbinop__case_21{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) + rule fun_vbinop__case_22{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2) + rule fun_vbinop__case_23{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MIN_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imin_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) + rule fun_vbinop__case_24{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) + rule fun_vbinop__case_25{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) + rule fun_vbinop__case_26{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2) + rule fun_vbinop__case_27{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, MAX_vbinop_Jnn_M(v_sx)), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $imax_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_28{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_29{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_30{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2) + rule fun_vbinop__case_31{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `AVGRU`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iavgr_, U_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_32{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_33{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_34{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + rule fun_vbinop__case_35{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `Q15MULR_SATS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $iq15mulr_sat_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_36{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I32_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_37{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I64_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_38{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I8_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2) = $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + rule fun_vbinop__case_39{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vbinop__0_vbinop_(I16_Jnn, v_M, `RELAXED_Q15MULRS`_vbinop_Jnn_M), v_1, v_2, $ivbinopsxnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2) + rule fun_vbinop__case_40{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2) + rule fun_vbinop__case_41{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, ADD_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fadd_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2) + rule fun_vbinop__case_42{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2) + rule fun_vbinop__case_43{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, SUB_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fsub_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2) + rule fun_vbinop__case_44{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2) + rule fun_vbinop__case_45{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MUL_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmul_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2) + rule fun_vbinop__case_46{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2) + rule fun_vbinop__case_47{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, DIV_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fdiv_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2) + rule fun_vbinop__case_48{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2) + rule fun_vbinop__case_49{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2) + rule fun_vbinop__case_50{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2) + rule fun_vbinop__case_51{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2) + rule fun_vbinop__case_52{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2) + rule fun_vbinop__case_53{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmin_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2) + rule fun_vbinop__case_54{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2) + rule fun_vbinop__case_55{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, PMAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fpmax_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2) + rule fun_vbinop__case_56{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2) + rule fun_vbinop__case_57{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MIN_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_min_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2) + rule fun_vbinop__case_58{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F32_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vbinop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2) = $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2) + rule fun_vbinop__case_59{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vbinop__1_vbinop_(F64_Fnn, v_M, RELAXED_MAX_vbinop_Fnn_M), v_1, v_2, $fvbinop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_max_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vternop_(v_shape : shape, v_vternop_ : vternop_, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_* +relation fun_vternop_: `%%%%%%`(shape, vternop_, vec_, vec_, vec_, vec_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_0{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I32_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_1{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I64_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_2{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I8_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + rule fun_vternop__case_3{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vternop__0_vternop_(I16_Jnn, v_M, RELAXED_LANESELECT_vternop_Jnn_M), v_1, v_2, v_3, $ivternopnd_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $irelaxed_laneselect_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) + rule fun_vternop__case_4{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3) + rule fun_vternop__case_5{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_MADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_madd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + rule fun_vternop__case_6{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F32_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vternop_{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3) = $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + rule fun_vternop__case_7{v_M : nat, v_1 : uN, v_2 : uN, v_3 : uN}: + `%%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vternop__1_vternop_(F64_Fnn, v_M, RELAXED_NMADD_vternop_Fnn_M), v_1, v_2, v_3, $fvternop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $frelaxed_nmadd_, v_1, v_2, v_3)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vrelop_(v_shape : shape, v_vrelop_ : vrelop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vrelop_: `%%%%%`(shape, vrelop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_0{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_1{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_2{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2) + rule fun_vrelop__case_3{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, EQ_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ieq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_4{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_5{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_6{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2) = $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2) + rule fun_vrelop__case_7{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, NE_vrelop_Jnn_M), v_1, v_2, $ivrelop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ine_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + rule fun_vrelop__case_8{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + rule fun_vrelop__case_9{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + rule fun_vrelop__case_10{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2) + rule fun_vrelop__case_11{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ilt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) + rule fun_vrelop__case_12{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) + rule fun_vrelop__case_13{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) + rule fun_vrelop__case_14{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2) + rule fun_vrelop__case_15{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GT_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $igt_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) + rule fun_vrelop__case_16{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) + rule fun_vrelop__case_17{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) + rule fun_vrelop__case_18{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2) + rule fun_vrelop__case_19{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, LE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ile_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) + rule fun_vrelop__case_20{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I32_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) + rule fun_vrelop__case_21{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I64_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) + rule fun_vrelop__case_22{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I8_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2) = $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2) + rule fun_vrelop__case_23{v_M : nat, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M)), mk_vrelop__0_vrelop_(I16_Jnn, v_M, GE_vrelop_Jnn_M(v_sx)), v_1, v_2, $ivrelopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ige_, v_sx, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2) + rule fun_vrelop__case_24{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2) + rule fun_vrelop__case_25{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, EQ_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $feq_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2) + rule fun_vrelop__case_26{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2) + rule fun_vrelop__case_27{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, NE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fne_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2) + rule fun_vrelop__case_28{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2) + rule fun_vrelop__case_29{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $flt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2) + rule fun_vrelop__case_30{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2) + rule fun_vrelop__case_31{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GT_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fgt_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2) + rule fun_vrelop__case_32{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2) + rule fun_vrelop__case_33{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, LE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fle_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2) + rule fun_vrelop__case_34{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F32_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vrelop_{v_M : nat, v_1 : uN, v_2 : uN}(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2) = $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2) + rule fun_vrelop__case_35{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(v_M)), mk_vrelop__1_vrelop_(F64_Fnn, v_M, GE_vrelop_Fnn_M), v_1, v_2, $fvrelop_(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M)), def $fge_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_lane_ : lane_) : lane_* +relation fun_lcvtop__: `%%%%%`(shape, shape, vcvtop__, lane_, lane_*) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I32_Jnn, c)] + rule fun_lcvtop___case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I32_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I64_Jnn, c)] + rule fun_lcvtop___case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I64_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I8_Jnn, c)] + rule fun_lcvtop___case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I8_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__2_lane_(I16_Jnn, c)] + rule fun_lcvtop___case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, c_1 : uN, c : uN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), mk_vcvtop___0_vcvtop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__2_lane_(I16_Jnn, c)]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)) - -- if (c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1)) + -- where c = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_16{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_17{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_18{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))] + rule fun_lcvtop___case_19{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F32_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_20{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I32_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I32_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_21{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I64_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I64_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_22{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I8_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I8_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1)) = [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))] + rule fun_lcvtop___case_23{M_1 : nat, M_2 : nat, half_opt : half?, v_sx : sx, c_1 : uN, c : fN}: + `%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___1_vcvtop__(I16_Jnn, M_1, F64_Fnn, M_2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(half_opt, v_sx)), mk_lane__2_lane_(I16_Jnn, c_1), [mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))]) -- wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))) - -- if (c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1)) + -- where c = $convert__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), v_sx, c_1) {c} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_24{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_25{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_26{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_27{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_28{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_29{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_30{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_31{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_32{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_33{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_34{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_35{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_36{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_37{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_38{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_39{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $trunc_sat__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_40{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_41{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_42{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_43{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_44{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_45{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_46{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_47{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F32_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_48{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_49{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_50{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_51{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I32_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I32_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I32_Inn), mk_num__0_num_(I32_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I32_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_52{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_53{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_54{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt}) + rule fun_lcvtop___case_55{M_1 : nat, M_2 : nat, v_sx : sx, zero_opt : zero?, c_1 : fN, c_opt : iN?}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___2_vcvtop__(F64_Fnn, M_1, I64_Jnn, M_2, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(v_sx, zero_opt)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), lift(mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))?{c <- c_opt})) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_addrtype(I64_Inn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_addrtype(I64_Inn), mk_num__0_num_(I64_Inn, c))))?{c <- c_opt} - -- if (c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1)) + -- where c_opt = $relaxed_trunc__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_addrtype(I64_Inn)), v_sx, c_1) {c_opt} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_56{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_57{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_58{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_59{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_60{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_61{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_62{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_63{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero)), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c_lst = $demote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_64{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_65{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_66{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_67{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F32_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F32_numtype, mk_num__1_num_(F32_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F32_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_68{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_69{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F32_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F32_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F32_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F32_Fnn), mk_num__1_num_(F32_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1)) + -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F32_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_70{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1))) = mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst} + rule fun_lcvtop___case_71{M_1 : nat, M_2 : nat, c_1 : fN, c_lst : fN*}: + `%%%%%`(`%X%`_shape(F64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(F64_lanetype, mk_dim_dim(M_2)), mk_vcvtop___3_vcvtop__(F64_Fnn, M_1, F64_Fnn, M_2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2), mk_lane__0_lane_(F64_numtype, mk_num__1_num_(F64_Fnn, c_1)), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Fnn(F64_Fnn), mk_dim_dim(M_2))), mk_lane__0_lane_($numtype_Fnn(F64_Fnn), mk_num__1_num_(F64_Fnn, c))))*{c <- c_lst} - -- if (c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1)) + -- where c_lst = $promote__($lsizenn1($lanetype_Fnn(F64_Fnn)), $lsizenn2($lanetype_Fnn(F64_Fnn)), c_1) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vcvtop__(shape_1 : shape, shape_2 : shape, v_vcvtop__ : vcvtop__, v_vec_ : vec_) : vec_ - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, v_1) = v +relation fun_vcvtop__: `%%%%%`(shape, shape, vcvtop__, vec_, vec_) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vcvtop___case_0{Lnn_1 : lanetype, v_M : nat, Lnn_2 : lanetype, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2_lst : lane_**, var_1 : zero?, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, v_1, v) + -- if (|var_2_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1, var_2))*{var_2 <- var_2_lst, c_1 <- c_1_lst} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_1) + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(v_M))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(v_M))) - -- if (($halfop(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop) = ?())) - -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1)) - -- if (c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), `%X%`_shape(Lnn_2, mk_dim_dim(v_M)), vcvtop, c_1)*{c_1 <- c_1_lst})) + -- if ((var_0 = ?()) /\ (var_1 = ?())) + -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(v_M)), v_1) {c_1_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, var_2_lst) {c_lst_lst} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(v_M)), c_lst)*{c_lst <- c_lst_lst}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) = v + rule fun_vcvtop___case_1{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, v_half : half, c_1_lst : lane_*, c_lst_lst : lane_**, var_1_lst : lane_**, var_0 : half?}: + `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1, v) + -- if (|var_1_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- var_1_lst, c_1 <- c_1_lst} + -- fun_halfop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) - -- if ($halfop(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop) = ?(v_half)) - -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2]) - -- if (c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1)*{c_1 <- c_1_lst})) + -- if (var_0 = ?(v_half)) + -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)[$fun_half(v_half, 0, M_2) : M_2] {c_1_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, var_1_lst) {c_lst_lst} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vcvtop__{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**}(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1) = v + rule fun_vcvtop___case_2{Lnn_1 : lanetype, M_1 : nat, Lnn_2 : lanetype, M_2 : nat, vcvtop : vcvtop__, v_1 : uN, v : uN, c_1_lst : lane_*, c_lst_lst : lane_**, var_2 : lane_, var_1_lst : lane_**, var_0 : zero?}: + `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, v_1, v) + -- fun_zero: `%%`(Lnn_2, var_2) + -- if (|var_1_lst| = |c_1_lst|) + -- (fun_lcvtop__: `%%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1, var_1))*{var_1 <- var_1_lst, c_1 <- c_1_lst} + -- fun_zeroop: `%%%%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, var_0) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`(Lnn_2, c))*{c <- c_lst}*{c_lst <- c_lst_lst} -- wf_shape: `%`(`%X%`_shape(Lnn_1, mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape(Lnn_2, mk_dim_dim(M_2))) - -- if ($zeroop(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1)) - -- if (c_lst_lst = $setproduct_(syntax lane_, $lcvtop__(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), `%X%`_shape(Lnn_2, mk_dim_dim(M_2)), vcvtop, c_1)*{c_1 <- c_1_lst} ++ [$fun_zero(Lnn_2)]^M_1{})) + -- if (var_0 = ?(ZERO_zero)) + -- where c_1_lst = $lanes_(`%X%`_shape(Lnn_1, mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_lst_lst = $setproduct_(syntax lane_, var_1_lst ++ [var_2]^M_1{}) {c_lst_lst} + -- if (|$inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}| > 0) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, mk_dim_dim(M_2)), c_lst)*{c_lst <- c_lst_lst}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vshiftop_(v_ishape : ishape, v_vshiftop_ : vshiftop_, v_vec_ : vec_, v_u32 : u32) : vec_ +relation fun_vshiftop_: `%%%%%`(ishape, vshiftop_, vec_, u32, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) + rule fun_vshiftop__case_0{v_M : nat, v : uN, i : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) + rule fun_vshiftop__case_1{v_M : nat, v : uN, i : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) + rule fun_vshiftop__case_2{v_M : nat, v : uN, i : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i) = $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i) + rule fun_vshiftop__case_3{v_M : nat, v : uN, i : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHL_vshiftop_Jnn_M), v, i, $ivshiftop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishl_, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) + rule fun_vshiftop__case_4{v_M : nat, v_sx : sx, v : uN, i : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I32_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) + rule fun_vshiftop__case_5{v_M : nat, v_sx : sx, v : uN, i : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I64_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) + rule fun_vshiftop__case_6{v_M : nat, v_sx : sx, v : uN, i : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I8_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vshiftop_{v_M : nat, v_sx : sx, v : uN, i : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i) = $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i) + rule fun_vshiftop__case_7{v_M : nat, v_sx : sx, v : uN, i : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), mk_vshiftop__0_vshiftop_(I16_Jnn, v_M, SHR_vshiftop_Jnn_M(v_sx)), v, i, $ivshiftopsx_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), def $ishr_, v_sx, v, i)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbitmaskop_(v_ishape : ishape, v_vec_ : vec_) : u32 +relation fun_vbitmaskop_: `%%%`(ishape, vec_, u32) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v) + rule fun_vbitmaskop__case_0{v_M : nat, v : uN, var_0 : u32}: + `%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v) + rule fun_vbitmaskop__case_1{v_M : nat, v : uN, var_0 : u32}: + `%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v) + rule fun_vbitmaskop__case_2{v_M : nat, v : uN, var_0 : u32}: + `%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{v_M : nat, v : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), v) = $ivbitmaskop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v) + rule fun_vbitmaskop__case_3{v_M : nat, v : uN, var_0 : u32}: + `%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(v_M))), v, var_0) + -- fun_ivbitmaskop_: `%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M)), v, var_0) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vswizzlop_(v_bshape : bshape, v_vswizzlop_ : vswizzlop_, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vswizzlop_: `%%%%%`(bshape, vswizzlop_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $iswizzle_lane_, v_1, v_2) + rule fun_vswizzlop__case_0{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $iswizzle_lane_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vswizzlop_{v_M : nat, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2) + rule fun_vswizzlop__case_1{v_M : nat, v_1 : uN, v_2 : uN}: + `%%%%%`(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), mk_vswizzlop__0_vswizzlop_(v_M, RELAXED_SWIZZLE_vswizzlop_M), v_1, v_2, $ivswizzlop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), def $irelaxed_swizzle_lane_, v_1, v_2)) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vshufflop_(v_bshape : bshape, var_0 : laneidx*, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vshufflop_: `%%%%%`(bshape, laneidx*, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN}(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), i_lst, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2) + rule fun_vshufflop__case_0{v_M : nat, i_lst : laneidx*, v_1 : uN, v_2 : uN, var_0 : vec_}: + `%%%%%`(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))), i_lst, v_1, v_2, var_0) + -- fun_ivshufflop_: `%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M)), i_lst, v_1, v_2, var_0) -- wf_shape: `%`(`%X%`_shape(I8_lanetype, mk_dim_dim(v_M))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vnarrowop__: `%%%%%%`(shape, shape, sx, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_0{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10301,13 +12314,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_1{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10315,13 +12332,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_2{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10329,13 +12350,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_3{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10343,13 +12368,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I32_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_4{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10357,13 +12386,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_5{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10371,13 +12404,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_6{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10385,13 +12422,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_7{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10399,13 +12440,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I64_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_8{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10413,13 +12458,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_9{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10427,13 +12476,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_10{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10441,13 +12494,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_11{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10455,13 +12512,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I8_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_12{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10469,13 +12530,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I32_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_13{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10483,13 +12548,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I64_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_14{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10497,13 +12566,17 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I8_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2) = v + rule fun_vnarrowop___case_15{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN, v_2 : uN, v : uN, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}: + `%%%%%%`(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), v_sx, v_1, v_2, v) -- wf_uN: `%%`(128, v) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_2))*{c_2 <- c_2_lst} @@ -10511,11 +12584,13 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, v_sx : sx, v_vec_ : vec_, v_v -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_1)))*{c'_1 <- c'_1_lst} -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c'_2)))*{c'_2 <- c'_2_lst} - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)) - -- if (c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst})) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2) {c_2_lst} + -- (if ($proj_lane__2(c_1) =/= ?()))*{c_1 <- c_1_lst} + -- where c'_1_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- (if ($proj_lane__2(c_2) =/= ?()))*{c_2 <- c_2_lst} + -- where c'_2_lst = $narrow__($lsize($lanetype_Jnn(I16_Jnn)), $lsize($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where v = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c'_1)*{c'_1 <- c'_1_lst} ++ mk_lane__2_lane_(I16_Jnn, c'_2)*{c'_2 <- c'_2_lst}) {v} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(v_N : N, var_0 : iN*) : iN* @@ -10534,9 +12609,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10544,9 +12619,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10554,9 +12629,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10564,9 +12639,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10574,9 +12649,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10584,9 +12659,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10594,9 +12669,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10604,9 +12679,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10614,9 +12689,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10624,9 +12699,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10634,9 +12709,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10644,9 +12719,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10654,9 +12729,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10664,9 +12739,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10674,9 +12749,9 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*) : iN*, v_sx : sx, v_1 : uN, c_lst : iN*, c_1_lst : lane_*, c'_1_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, v_sx, v_1) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10684,74 +12759,105 @@ def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*) : iN*, -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1) {c_1_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), v_sx, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vextunop__(ishape_1 : ishape, ishape_2 : ishape, v_vextunop__ : vextunop__, v_vec_ : vec_) : vec_ +relation fun_vextunop__: `%%%%%`(ishape, ishape, vextunop__, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_0{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_1{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_2{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_3{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_4{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_5{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_6{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_7{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_8{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_9{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_10{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_11{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_12{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_13{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_14{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextunop__{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1) = $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1) + rule fun_vextunop___case_15{M_1 : nat, M_2 : nat, v_sx : sx, v_1 : uN}: + `%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(v_sx)), v_1, $ivextunop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivadd_pairwise_, v_sx, v_1)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) @@ -10782,11 +12888,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10796,11 +12902,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10810,11 +12916,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I32_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I32_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10824,11 +12930,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I32_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I32_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I32_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10838,11 +12944,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10852,11 +12958,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10866,11 +12972,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I64_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I64_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10880,11 +12986,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I64_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I64_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I64_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10894,11 +13000,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10908,11 +13014,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10922,11 +13028,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I8_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I8_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10936,11 +13042,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I8_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I8_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I8_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10950,11 +13056,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I32_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10964,11 +13070,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I64_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10978,11 +13084,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I8_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__{M_1 : nat, M_2 : nat, def $f_(v_N : N, iN*, iN*) : iN*, sx_1 : sx, sx_2 : sx, i : uN, k : uN, v_1 : uN, v_2 : uN, c_lst : iN*, c_1_lst : lane_*, c_2_lst : lane_*, c'_1_lst : iN*, c'_2_lst : iN*}(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1)), `%X%`_shape(I16_lanetype, mk_dim_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_lane__2_lane_(I16_Jnn, c)*{c <- c_lst}) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), c_1))*{c_1 <- c_1_lst} @@ -10992,11 +13098,11 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(v_N : N, iN*, iN*) : -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_lane__2_lane_(I16_Jnn, c)))*{c <- c_lst} -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) - -- if (c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0]) - -- if (c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst}) - -- if (c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst}) - -- if (c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst)) + -- where c_1_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_1)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_1_lst} + -- where c_2_lst = $lanes_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), v_2)[$proj_uN_0(i).0 : $proj_uN_0(k).0] {c_2_lst} + -- where c'_1_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_1, !($proj_lane__2(c_1)))*{c_1 <- c_1_lst} {c'_1_lst} + -- where c'_2_lst = $extend__($lsizenn1($lanetype_Jnn(I16_Jnn)), $lsizenn2($lanetype_Jnn(I16_Jnn)), sx_2, !($proj_lane__2(c_2)))*{c_2 <- c_2_lst} {c'_2_lst} + -- where c_lst = $f_($lsizenn2($lanetype_Jnn(I16_Jnn)), c'_1_lst, c'_2_lst) {c_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivmul_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* @@ -11004,300 +13110,399 @@ def $ivmul_(v_N : N, var_0 : iN*, var_1 : iN*) : iN* def $ivmul_{v_N : nat, i_1_lst : iN*, i_2_lst : iN*}(v_N, i_1_lst, i_2_lst) = $imul_(v_N, i_1, i_2)*{i_1 <- i_1_lst, i_2 <- i_2_lst} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vextbinop__(ishape_1 : ishape, ishape_2 : ishape, v_vextbinop__ : vextbinop__, v_vec_ : vec_, v_vec__0 : vec_) : vec_ +relation fun_vextbinop__: `%%%%%%`(ishape, ishape, vextbinop__, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_0{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_1{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_2{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_3{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_4{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_5{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_6{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_7{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_8{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_9{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_10{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_11{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_12{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_13{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_14{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2) + rule fun_vextbinop___case_15{M_1 : nat, M_2 : nat, v_half : half, v_sx : sx, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(v_half, v_sx)), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivmul_, v_sx, v_sx, mk_uN_laneidx($fun_half(v_half, 0, M_2)), mk_uN_laneidx(M_2), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN($fun_half(v_half, 0, M_2))) -- wf_uN: `%%`(8, mk_uN_uN(M_2)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_16{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_17{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_18{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_19{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_20{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_21{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_22{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_23{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_24{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_25{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_26{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_27{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_28{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_29{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_30{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_31{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_, S_sx, S_sx, mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_32{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_33{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_34{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_35{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_36{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_37{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_38{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_39{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_40{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_41{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_42{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_43{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_44{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_45{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_46{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextbinop__{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2) = $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2) + rule fun_vextbinop___case_47{M_1 : nat, M_2 : nat, v_1 : uN, v_2 : uN}: + `%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), v_1, v_2, $ivextbinop__(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1)), `%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), def $ivdot_sat_, S_sx, $fun_relaxed2($R_idot, syntax sx, S_sx, U_sx), mk_uN_laneidx(0), mk_uN_laneidx(M_1), v_1, v_2)) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_uN: `%%`(8, mk_uN_uN(0)) -- wf_uN: `%%`(8, mk_uN_uN(M_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vextternop__, v_vec_ : vec_, v_vec__0 : vec_, v_vec__1 : vec_) : vec_ +relation fun_vextternop__: `%%%%%%%`(ishape, ishape, vextternop__, vec_, vec_, vec_, vec_) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + rule fun_vextternop___case_0{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11309,12 +13514,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_1{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11326,12 +13537,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_2{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11343,12 +13560,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_3{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I32_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11360,12 +13583,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I32_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I32_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_4{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11377,12 +13606,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_5{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11394,12 +13629,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_6{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11411,12 +13652,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_7{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I64_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11428,12 +13675,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I64_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I64_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_8{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11445,12 +13698,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_9{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11462,12 +13721,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_10{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11479,12 +13744,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_11{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I8_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11496,12 +13767,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I8_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I8_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_12{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I32_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11513,12 +13790,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I32_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I32_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I32_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_13{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I64_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11530,12 +13813,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I64_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I64_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I64_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_14{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I8_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11547,12 +13836,18 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I8_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I8_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I8_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fun_vextternop__{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN}(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3) = c + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) + + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + rule fun_vextternop___case_15{M_1 : nat, M_2 : nat, c_1 : uN, c_2 : uN, c_3 : uN, c : uN, v_Jnn : Jnn, v_M : nat, c' : uN, c'' : uN, var_2 : vec_*, var_1 : vec_, var_0 : vec_}: + `%%%%%%%`(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(M_2))), mk_vextternop___0_vextternop__(I16_Jnn, M_1, I16_Jnn, M_2, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, c_3, c) + -- fun_vbinop_: `%%%%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3, var_2) + -- fun_vextunop__: `%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c', var_1) + -- fun_vextbinop__: `%%%%%%`(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2, var_0) -- wf_uN: `%%`(128, c) -- wf_uN: `%%`(128, c') -- wf_uN: `%%`(128, c'') @@ -11564,10 +13859,11 @@ def $fun_vextternop__(ishape_1 : ishape, ishape_2 : ishape, v_vextternop__ : vex -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))) -- wf_vbinop_: `%%`(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M)) -- if ($jsizenn(v_Jnn) = (2 * $lsizenn1($lanetype_Jnn(I16_Jnn)))) - -- if (v_M = (2 * M_2)) - -- if (c' = $fun_vextbinop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_1))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_vextbinop___0_vextbinop__(I16_Jnn, M_1, v_Jnn, v_M, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2), c_1, c_2)) - -- if (c'' = $fun_vextunop__(mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), mk_ishape_ishape(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2))), mk_vextunop___0_vextunop__(v_Jnn, v_M, I16_Jnn, M_2, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx)), c')) - -- if (c <- $fun_vbinop_(`%X%`_shape($lanetype_Jnn(I16_Jnn), mk_dim_dim(M_2)), mk_vbinop__0_vbinop_(I16_Jnn, M_2, ADD_vbinop_Jnn_M), c'', c_3)) + -- where v_M = (2 * M_2) {v_M} + -- where c' = var_0 {c'} + -- where c'' = var_1 {c''} + -- if (|var_2| > 0) + -- if (c <- var_2) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = @@ -12011,240 +14307,443 @@ def $Ki : nat def $Ki = 1024 ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $packfield_(v_storagetype : storagetype, v_val : val) : fieldval +relation fun_packfield_: `%%%`(storagetype, val, fieldval?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(BOT_storagetype, v_val) = $fieldval_val(v_val) + rule fun_packfield__case_0{v_val : val}: + `%%%`(BOT_storagetype, v_val, ?($fieldval_val(v_val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{null_opt : null?, v_heaptype : heaptype, v_val : val}(REF_storagetype(null_opt, v_heaptype), v_val) = $fieldval_val(v_val) + rule fun_packfield__case_1{null_opt : null?, v_heaptype : heaptype, v_val : val}: + `%%%`(REF_storagetype(null_opt, v_heaptype), v_val, ?($fieldval_val(v_val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(V128_storagetype, v_val) = $fieldval_val(v_val) + rule fun_packfield__case_2{v_val : val}: + `%%%`(V128_storagetype, v_val, ?($fieldval_val(v_val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(F64_storagetype, v_val) = $fieldval_val(v_val) + rule fun_packfield__case_3{v_val : val}: + `%%%`(F64_storagetype, v_val, ?($fieldval_val(v_val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(F32_storagetype, v_val) = $fieldval_val(v_val) + rule fun_packfield__case_4{v_val : val}: + `%%%`(F32_storagetype, v_val, ?($fieldval_val(v_val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(I64_storagetype, v_val) = $fieldval_val(v_val) + rule fun_packfield__case_5{v_val : val}: + `%%%`(I64_storagetype, v_val, ?($fieldval_val(v_val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{v_val : val}(I32_storagetype, v_val) = $fieldval_val(v_val) + rule fun_packfield__case_6{v_val : val}: + `%%%`(I32_storagetype, v_val, ?($fieldval_val(v_val))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)) + rule fun_packfield__case_7{i : uN}: + `%%%`(I8_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i)))) -- wf_fieldval: `%`(PACK_fieldval(I8_packtype, $wrap__(32, $psize(I8_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{i : uN}(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i))) = PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)) + rule fun_packfield__case_8{i : uN}: + `%%%`(I16_storagetype, CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, i)), ?(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i)))) -- wf_fieldval: `%`(PACK_fieldval(I16_packtype, $wrap__(32, $psize(I16_packtype), i))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_packfield__case_9{x0 : storagetype, x1 : val}: + `%%%`(x0, x1, ?()) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $unpackfield_(v_storagetype : storagetype, var_0 : sx?, v_fieldval : fieldval) : val +relation fun_unpackfield_: `%%%%`(storagetype, sx?, fieldval, val?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_addrref : addrref}(BOT_storagetype, ?(), REF_EXTERN_fieldval(v_addrref)) = REF_EXTERN_val(v_addrref) + rule fun_unpackfield__case_0{v_addrref : addrref}: + `%%%%`(BOT_storagetype, ?(), REF_EXTERN_fieldval(v_addrref), ?(REF_EXTERN_val(v_addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_addrref : addrref, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_EXTERN_fieldval(v_addrref)) = REF_EXTERN_val(v_addrref) + rule fun_unpackfield__case_1{v_addrref : addrref, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), REF_EXTERN_fieldval(v_addrref), ?(REF_EXTERN_val(v_addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_addrref : addrref}(V128_storagetype, ?(), REF_EXTERN_fieldval(v_addrref)) = REF_EXTERN_val(v_addrref) + rule fun_unpackfield__case_2{v_addrref : addrref}: + `%%%%`(V128_storagetype, ?(), REF_EXTERN_fieldval(v_addrref), ?(REF_EXTERN_val(v_addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_addrref : addrref}(F64_storagetype, ?(), REF_EXTERN_fieldval(v_addrref)) = REF_EXTERN_val(v_addrref) + rule fun_unpackfield__case_3{v_addrref : addrref}: + `%%%%`(F64_storagetype, ?(), REF_EXTERN_fieldval(v_addrref), ?(REF_EXTERN_val(v_addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_addrref : addrref}(F32_storagetype, ?(), REF_EXTERN_fieldval(v_addrref)) = REF_EXTERN_val(v_addrref) + rule fun_unpackfield__case_4{v_addrref : addrref}: + `%%%%`(F32_storagetype, ?(), REF_EXTERN_fieldval(v_addrref), ?(REF_EXTERN_val(v_addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_addrref : addrref}(I64_storagetype, ?(), REF_EXTERN_fieldval(v_addrref)) = REF_EXTERN_val(v_addrref) + rule fun_unpackfield__case_5{v_addrref : addrref}: + `%%%%`(I64_storagetype, ?(), REF_EXTERN_fieldval(v_addrref), ?(REF_EXTERN_val(v_addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_addrref : addrref}(I32_storagetype, ?(), REF_EXTERN_fieldval(v_addrref)) = REF_EXTERN_val(v_addrref) + rule fun_unpackfield__case_6{v_addrref : addrref}: + `%%%%`(I32_storagetype, ?(), REF_EXTERN_fieldval(v_addrref), ?(REF_EXTERN_val(v_addrref))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(BOT_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = REF_HOST_ADDR_val(v_hostaddr) + rule fun_unpackfield__case_7{v_hostaddr : hostaddr}: + `%%%%`(BOT_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr), ?(REF_HOST_ADDR_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = REF_HOST_ADDR_val(v_hostaddr) + rule fun_unpackfield__case_8{v_hostaddr : hostaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), REF_HOST_ADDR_fieldval(v_hostaddr), ?(REF_HOST_ADDR_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(V128_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = REF_HOST_ADDR_val(v_hostaddr) + rule fun_unpackfield__case_9{v_hostaddr : hostaddr}: + `%%%%`(V128_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr), ?(REF_HOST_ADDR_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(F64_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = REF_HOST_ADDR_val(v_hostaddr) + rule fun_unpackfield__case_10{v_hostaddr : hostaddr}: + `%%%%`(F64_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr), ?(REF_HOST_ADDR_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(F32_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = REF_HOST_ADDR_val(v_hostaddr) + rule fun_unpackfield__case_11{v_hostaddr : hostaddr}: + `%%%%`(F32_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr), ?(REF_HOST_ADDR_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(I64_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = REF_HOST_ADDR_val(v_hostaddr) + rule fun_unpackfield__case_12{v_hostaddr : hostaddr}: + `%%%%`(I64_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr), ?(REF_HOST_ADDR_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_hostaddr : hostaddr}(I32_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr)) = REF_HOST_ADDR_val(v_hostaddr) + rule fun_unpackfield__case_13{v_hostaddr : hostaddr}: + `%%%%`(I32_storagetype, ?(), REF_HOST_ADDR_fieldval(v_hostaddr), ?(REF_HOST_ADDR_val(v_hostaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(BOT_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = REF_EXN_ADDR_val(v_exnaddr) + rule fun_unpackfield__case_14{v_exnaddr : exnaddr}: + `%%%%`(BOT_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr), ?(REF_EXN_ADDR_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = REF_EXN_ADDR_val(v_exnaddr) + rule fun_unpackfield__case_15{v_exnaddr : exnaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), REF_EXN_ADDR_fieldval(v_exnaddr), ?(REF_EXN_ADDR_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(V128_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = REF_EXN_ADDR_val(v_exnaddr) + rule fun_unpackfield__case_16{v_exnaddr : exnaddr}: + `%%%%`(V128_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr), ?(REF_EXN_ADDR_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(F64_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = REF_EXN_ADDR_val(v_exnaddr) + rule fun_unpackfield__case_17{v_exnaddr : exnaddr}: + `%%%%`(F64_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr), ?(REF_EXN_ADDR_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(F32_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = REF_EXN_ADDR_val(v_exnaddr) + rule fun_unpackfield__case_18{v_exnaddr : exnaddr}: + `%%%%`(F32_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr), ?(REF_EXN_ADDR_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(I64_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = REF_EXN_ADDR_val(v_exnaddr) + rule fun_unpackfield__case_19{v_exnaddr : exnaddr}: + `%%%%`(I64_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr), ?(REF_EXN_ADDR_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_exnaddr : exnaddr}(I32_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr)) = REF_EXN_ADDR_val(v_exnaddr) + rule fun_unpackfield__case_20{v_exnaddr : exnaddr}: + `%%%%`(I32_storagetype, ?(), REF_EXN_ADDR_fieldval(v_exnaddr), ?(REF_EXN_ADDR_val(v_exnaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(BOT_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = REF_FUNC_ADDR_val(v_funcaddr) + rule fun_unpackfield__case_21{v_funcaddr : funcaddr}: + `%%%%`(BOT_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr), ?(REF_FUNC_ADDR_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = REF_FUNC_ADDR_val(v_funcaddr) + rule fun_unpackfield__case_22{v_funcaddr : funcaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), REF_FUNC_ADDR_fieldval(v_funcaddr), ?(REF_FUNC_ADDR_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(V128_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = REF_FUNC_ADDR_val(v_funcaddr) + rule fun_unpackfield__case_23{v_funcaddr : funcaddr}: + `%%%%`(V128_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr), ?(REF_FUNC_ADDR_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(F64_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = REF_FUNC_ADDR_val(v_funcaddr) + rule fun_unpackfield__case_24{v_funcaddr : funcaddr}: + `%%%%`(F64_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr), ?(REF_FUNC_ADDR_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(F32_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = REF_FUNC_ADDR_val(v_funcaddr) + rule fun_unpackfield__case_25{v_funcaddr : funcaddr}: + `%%%%`(F32_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr), ?(REF_FUNC_ADDR_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(I64_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = REF_FUNC_ADDR_val(v_funcaddr) + rule fun_unpackfield__case_26{v_funcaddr : funcaddr}: + `%%%%`(I64_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr), ?(REF_FUNC_ADDR_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_funcaddr : funcaddr}(I32_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr)) = REF_FUNC_ADDR_val(v_funcaddr) + rule fun_unpackfield__case_27{v_funcaddr : funcaddr}: + `%%%%`(I32_storagetype, ?(), REF_FUNC_ADDR_fieldval(v_funcaddr), ?(REF_FUNC_ADDR_val(v_funcaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(BOT_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = REF_ARRAY_ADDR_val(v_arrayaddr) + rule fun_unpackfield__case_28{v_arrayaddr : arrayaddr}: + `%%%%`(BOT_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr), ?(REF_ARRAY_ADDR_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = REF_ARRAY_ADDR_val(v_arrayaddr) + rule fun_unpackfield__case_29{v_arrayaddr : arrayaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr), ?(REF_ARRAY_ADDR_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(V128_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = REF_ARRAY_ADDR_val(v_arrayaddr) + rule fun_unpackfield__case_30{v_arrayaddr : arrayaddr}: + `%%%%`(V128_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr), ?(REF_ARRAY_ADDR_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(F64_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = REF_ARRAY_ADDR_val(v_arrayaddr) + rule fun_unpackfield__case_31{v_arrayaddr : arrayaddr}: + `%%%%`(F64_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr), ?(REF_ARRAY_ADDR_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(F32_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = REF_ARRAY_ADDR_val(v_arrayaddr) + rule fun_unpackfield__case_32{v_arrayaddr : arrayaddr}: + `%%%%`(F32_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr), ?(REF_ARRAY_ADDR_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(I64_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = REF_ARRAY_ADDR_val(v_arrayaddr) + rule fun_unpackfield__case_33{v_arrayaddr : arrayaddr}: + `%%%%`(I64_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr), ?(REF_ARRAY_ADDR_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_arrayaddr : arrayaddr}(I32_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr)) = REF_ARRAY_ADDR_val(v_arrayaddr) + rule fun_unpackfield__case_34{v_arrayaddr : arrayaddr}: + `%%%%`(I32_storagetype, ?(), REF_ARRAY_ADDR_fieldval(v_arrayaddr), ?(REF_ARRAY_ADDR_val(v_arrayaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(BOT_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = REF_STRUCT_ADDR_val(v_structaddr) + rule fun_unpackfield__case_35{v_structaddr : structaddr}: + `%%%%`(BOT_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr), ?(REF_STRUCT_ADDR_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = REF_STRUCT_ADDR_val(v_structaddr) + rule fun_unpackfield__case_36{v_structaddr : structaddr, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), REF_STRUCT_ADDR_fieldval(v_structaddr), ?(REF_STRUCT_ADDR_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(V128_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = REF_STRUCT_ADDR_val(v_structaddr) + rule fun_unpackfield__case_37{v_structaddr : structaddr}: + `%%%%`(V128_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr), ?(REF_STRUCT_ADDR_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(F64_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = REF_STRUCT_ADDR_val(v_structaddr) + rule fun_unpackfield__case_38{v_structaddr : structaddr}: + `%%%%`(F64_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr), ?(REF_STRUCT_ADDR_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(F32_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = REF_STRUCT_ADDR_val(v_structaddr) + rule fun_unpackfield__case_39{v_structaddr : structaddr}: + `%%%%`(F32_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr), ?(REF_STRUCT_ADDR_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(I64_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = REF_STRUCT_ADDR_val(v_structaddr) + rule fun_unpackfield__case_40{v_structaddr : structaddr}: + `%%%%`(I64_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr), ?(REF_STRUCT_ADDR_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_structaddr : structaddr}(I32_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr)) = REF_STRUCT_ADDR_val(v_structaddr) + rule fun_unpackfield__case_41{v_structaddr : structaddr}: + `%%%%`(I32_storagetype, ?(), REF_STRUCT_ADDR_fieldval(v_structaddr), ?(REF_STRUCT_ADDR_val(v_structaddr))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(BOT_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = REF_I31_NUM_val(v_u31) + rule fun_unpackfield__case_42{v_u31 : u31}: + `%%%%`(BOT_storagetype, ?(), REF_I31_NUM_fieldval(v_u31), ?(REF_I31_NUM_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_I31_NUM_fieldval(v_u31)) = REF_I31_NUM_val(v_u31) + rule fun_unpackfield__case_43{v_u31 : u31, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), REF_I31_NUM_fieldval(v_u31), ?(REF_I31_NUM_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(V128_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = REF_I31_NUM_val(v_u31) + rule fun_unpackfield__case_44{v_u31 : u31}: + `%%%%`(V128_storagetype, ?(), REF_I31_NUM_fieldval(v_u31), ?(REF_I31_NUM_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(F64_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = REF_I31_NUM_val(v_u31) + rule fun_unpackfield__case_45{v_u31 : u31}: + `%%%%`(F64_storagetype, ?(), REF_I31_NUM_fieldval(v_u31), ?(REF_I31_NUM_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(F32_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = REF_I31_NUM_val(v_u31) + rule fun_unpackfield__case_46{v_u31 : u31}: + `%%%%`(F32_storagetype, ?(), REF_I31_NUM_fieldval(v_u31), ?(REF_I31_NUM_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(I64_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = REF_I31_NUM_val(v_u31) + rule fun_unpackfield__case_47{v_u31 : u31}: + `%%%%`(I64_storagetype, ?(), REF_I31_NUM_fieldval(v_u31), ?(REF_I31_NUM_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_u31 : u31}(I32_storagetype, ?(), REF_I31_NUM_fieldval(v_u31)) = REF_I31_NUM_val(v_u31) + rule fun_unpackfield__case_48{v_u31 : u31}: + `%%%%`(I32_storagetype, ?(), REF_I31_NUM_fieldval(v_u31), ?(REF_I31_NUM_val(v_u31))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(BOT_storagetype, ?(), REF_NULL_fieldval(heaptype_0)) = REF_NULL_val(heaptype_0) + rule fun_unpackfield__case_49{heaptype_0 : heaptype}: + `%%%%`(BOT_storagetype, ?(), REF_NULL_fieldval(heaptype_0), ?(REF_NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), REF_NULL_fieldval(heaptype_0)) = REF_NULL_val(heaptype_0) + rule fun_unpackfield__case_50{heaptype_0 : heaptype, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), REF_NULL_fieldval(heaptype_0), ?(REF_NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(V128_storagetype, ?(), REF_NULL_fieldval(heaptype_0)) = REF_NULL_val(heaptype_0) + rule fun_unpackfield__case_51{heaptype_0 : heaptype}: + `%%%%`(V128_storagetype, ?(), REF_NULL_fieldval(heaptype_0), ?(REF_NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(F64_storagetype, ?(), REF_NULL_fieldval(heaptype_0)) = REF_NULL_val(heaptype_0) + rule fun_unpackfield__case_52{heaptype_0 : heaptype}: + `%%%%`(F64_storagetype, ?(), REF_NULL_fieldval(heaptype_0), ?(REF_NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(F32_storagetype, ?(), REF_NULL_fieldval(heaptype_0)) = REF_NULL_val(heaptype_0) + rule fun_unpackfield__case_53{heaptype_0 : heaptype}: + `%%%%`(F32_storagetype, ?(), REF_NULL_fieldval(heaptype_0), ?(REF_NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(I64_storagetype, ?(), REF_NULL_fieldval(heaptype_0)) = REF_NULL_val(heaptype_0) + rule fun_unpackfield__case_54{heaptype_0 : heaptype}: + `%%%%`(I64_storagetype, ?(), REF_NULL_fieldval(heaptype_0), ?(REF_NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{heaptype_0 : heaptype}(I32_storagetype, ?(), REF_NULL_fieldval(heaptype_0)) = REF_NULL_val(heaptype_0) + rule fun_unpackfield__case_55{heaptype_0 : heaptype}: + `%%%%`(I32_storagetype, ?(), REF_NULL_fieldval(heaptype_0), ?(REF_NULL_val(heaptype_0))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, v_vec_ : vec_}(BOT_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_)) = VCONST_val(v_vectype, v_vec_) + rule fun_unpackfield__case_56{v_vectype : vectype, v_vec_ : vec_}: + `%%%%`(BOT_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_), ?(VCONST_val(v_vectype, v_vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, v_vec_ : vec_, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), VCONST_fieldval(v_vectype, v_vec_)) = VCONST_val(v_vectype, v_vec_) + rule fun_unpackfield__case_57{v_vectype : vectype, v_vec_ : vec_, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), VCONST_fieldval(v_vectype, v_vec_), ?(VCONST_val(v_vectype, v_vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, v_vec_ : vec_}(V128_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_)) = VCONST_val(v_vectype, v_vec_) + rule fun_unpackfield__case_58{v_vectype : vectype, v_vec_ : vec_}: + `%%%%`(V128_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_), ?(VCONST_val(v_vectype, v_vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, v_vec_ : vec_}(F64_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_)) = VCONST_val(v_vectype, v_vec_) + rule fun_unpackfield__case_59{v_vectype : vectype, v_vec_ : vec_}: + `%%%%`(F64_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_), ?(VCONST_val(v_vectype, v_vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, v_vec_ : vec_}(F32_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_)) = VCONST_val(v_vectype, v_vec_) + rule fun_unpackfield__case_60{v_vectype : vectype, v_vec_ : vec_}: + `%%%%`(F32_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_), ?(VCONST_val(v_vectype, v_vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, v_vec_ : vec_}(I64_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_)) = VCONST_val(v_vectype, v_vec_) + rule fun_unpackfield__case_61{v_vectype : vectype, v_vec_ : vec_}: + `%%%%`(I64_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_), ?(VCONST_val(v_vectype, v_vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_vectype : vectype, v_vec_ : vec_}(I32_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_)) = VCONST_val(v_vectype, v_vec_) + rule fun_unpackfield__case_62{v_vectype : vectype, v_vec_ : vec_}: + `%%%%`(I32_storagetype, ?(), VCONST_fieldval(v_vectype, v_vec_), ?(VCONST_val(v_vectype, v_vec_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, v_num_ : num_}(BOT_storagetype, ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) + rule fun_unpackfield__case_63{v_numtype : numtype, v_num_ : num_}: + `%%%%`(BOT_storagetype, ?(), CONST_fieldval(v_numtype, v_num_), ?(CONST_val(v_numtype, v_num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, v_num_ : num_, null_opt : null?, v_heaptype : heaptype}(REF_storagetype(null_opt, v_heaptype), ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) + rule fun_unpackfield__case_64{v_numtype : numtype, v_num_ : num_, null_opt : null?, v_heaptype : heaptype}: + `%%%%`(REF_storagetype(null_opt, v_heaptype), ?(), CONST_fieldval(v_numtype, v_num_), ?(CONST_val(v_numtype, v_num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, v_num_ : num_}(V128_storagetype, ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) + rule fun_unpackfield__case_65{v_numtype : numtype, v_num_ : num_}: + `%%%%`(V128_storagetype, ?(), CONST_fieldval(v_numtype, v_num_), ?(CONST_val(v_numtype, v_num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, v_num_ : num_}(F64_storagetype, ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) + rule fun_unpackfield__case_66{v_numtype : numtype, v_num_ : num_}: + `%%%%`(F64_storagetype, ?(), CONST_fieldval(v_numtype, v_num_), ?(CONST_val(v_numtype, v_num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, v_num_ : num_}(F32_storagetype, ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) + rule fun_unpackfield__case_67{v_numtype : numtype, v_num_ : num_}: + `%%%%`(F32_storagetype, ?(), CONST_fieldval(v_numtype, v_num_), ?(CONST_val(v_numtype, v_num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, v_num_ : num_}(I64_storagetype, ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) + rule fun_unpackfield__case_68{v_numtype : numtype, v_num_ : num_}: + `%%%%`(I64_storagetype, ?(), CONST_fieldval(v_numtype, v_num_), ?(CONST_val(v_numtype, v_num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_numtype : numtype, v_num_ : num_}(I32_storagetype, ?(), CONST_fieldval(v_numtype, v_num_)) = CONST_val(v_numtype, v_num_) + rule fun_unpackfield__case_69{v_numtype : numtype, v_num_ : num_}: + `%%%%`(I32_storagetype, ?(), CONST_fieldval(v_numtype, v_num_), ?(CONST_val(v_numtype, v_num_))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_sx : sx, i : uN}(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i))) + rule fun_unpackfield__case_70{v_sx : sx, i : uN}: + `%%%%`(I8_storagetype, ?(v_sx), PACK_fieldval(I8_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i))))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I8_packtype), 32, v_sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{v_sx : sx, i : uN}(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i)) = CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i))) + rule fun_unpackfield__case_71{v_sx : sx, i : uN}: + `%%%%`(I16_storagetype, ?(v_sx), PACK_fieldval(I16_packtype, i), ?(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i))))) -- wf_val: `%`(CONST_val(I32_numtype, mk_num__0_num_(I32_Inn, $extend__($psize(I16_packtype), 32, v_sx, i)))) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_unpackfield__case_72{x0 : storagetype, x1 : sx?, x2 : fieldval}: + `%%%%`(x0, x1, x2, ?()) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 -def $tagsxa(var_0 : externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 - def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 - def $tagsxa{a : nat, xa_lst : externaddr*}([TAG_externaddr(a)] ++ xa_lst) = [a] ++ $tagsxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 - def $tagsxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $tagsxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 +relation fun_tagsxa: `%%`(externaddr*, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : tagaddr*}: + `%%`([TAG_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_tagsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.6-193.13 + rule fun_tagsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : tagaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_tagsxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 -def $globalsxa(var_0 : externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 - def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 - def $globalsxa{a : nat, xa_lst : externaddr*}([GLOBAL_externaddr(a)] ++ xa_lst) = [a] ++ $globalsxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 - def $globalsxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $globalsxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 +relation fun_globalsxa: `%%`(externaddr*, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : globaladdr*}: + `%%`([GLOBAL_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_globalsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.6-194.16 + rule fun_globalsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : globaladdr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_globalsxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 -def $memsxa(var_0 : externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 - def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 - def $memsxa{a : nat, xa_lst : externaddr*}([MEM_externaddr(a)] ++ xa_lst) = [a] ++ $memsxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 - def $memsxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $memsxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 +relation fun_memsxa: `%%`(externaddr*, memaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : memaddr*}: + `%%`([MEM_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_memsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.6-195.13 + rule fun_memsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : memaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_memsxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 -def $tablesxa(var_0 : externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 - def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 - def $tablesxa{a : nat, xa_lst : externaddr*}([TABLE_externaddr(a)] ++ xa_lst) = [a] ++ $tablesxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 - def $tablesxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $tablesxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 +relation fun_tablesxa: `%%`(externaddr*, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_1{a : nat, xa_lst : externaddr*, var_0 : tableaddr*}: + `%%`([TABLE_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_tablesxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.6-196.15 + rule fun_tablesxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : tableaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_tablesxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 -def $funcsxa(var_0 : externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 - def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 - def $funcsxa{a : nat, xa_lst : externaddr*}([FUNC_externaddr(a)] ++ xa_lst) = [a] ++ $funcsxa(xa_lst) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 - def $funcsxa{v_externaddr : externaddr, xa_lst : externaddr*}([v_externaddr] ++ xa_lst) = $funcsxa(xa_lst) +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 +relation fun_funcsxa: `%%`(externaddr*, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_1{a : nat, xa_lst : externaddr*, var_0 : funcaddr*}: + `%%`([FUNC_externaddr(a)] ++ xa_lst, [a] ++ var_0) + -- fun_funcsxa: `%%`(xa_lst, var_0) + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.6-197.14 + rule fun_funcsxa_case_2{v_externaddr : externaddr, xa_lst : externaddr*, var_0 : funcaddr*}: + `%%`([v_externaddr] ++ xa_lst, var_0) + -- fun_funcsxa: `%%`(xa_lst, var_0) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -12363,108 +14862,136 @@ def $fun_local(v_state : state, v_localidx : localidx) : val? def $fun_local{s : store, f : frame, x : uN}(mk_state_state(s, f), x) = f.LOCALS_frame[$proj_uN_0(x).0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_local(v_state : state, v_localidx : localidx, v_val : val) : state +relation fun_with_local: `%%%%`(state, localidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{s : store, f : frame, x : uN, v : val}(mk_state_state(s, f), x, v) = mk_state_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)]) + rule fun_with_local_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(mk_state_state(s, f), x, v, mk_state_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) -- wf_state: `%`(mk_state_state(s, f[LOCALS_frame[$proj_uN_0(x).0] = ?(v)])) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_global(v_state : state, v_globalidx : globalidx, v_val : val) : state +relation fun_with_global: `%%%%`(state, globalidx, val, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{s : store, f : frame, x : uN, v : val}(mk_state_state(s, f), x, v) = mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f) + rule fun_with_global_case_0{s : store, f : frame, x : uN, v : val}: + `%%%%`(mk_state_state(s, f), x, v, mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.GLOBALS_moduleinst|) -- wf_state: `%`(mk_state_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[$proj_uN_0(x).0]].VALUE_globalinst = v], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_table(v_state : state, v_tableidx : tableidx, nat : nat, v_ref : ref) : state +relation fun_with_table: `%%%%%`(state, tableidx, nat, ref, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{s : store, f : frame, x : uN, i : nat, r : ref}(mk_state_state(s, f), x, i, r) = mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f) + rule fun_with_table_case_0{s : store, f : frame, x : uN, i : nat, r : ref}: + `%%%%%`(mk_state_state(s, f), x, i, r, mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]].REFS_tableinst[i] = r], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_tableinst(v_state : state, v_tableidx : tableidx, v_tableinst : tableinst) : state +relation fun_with_tableinst: `%%%%`(state, tableidx, tableinst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{s : store, f : frame, x : uN, ti : tableinst}(mk_state_state(s, f), x, ti) = mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f) + rule fun_with_tableinst_case_0{s : store, f : frame, x : uN, ti : tableinst}: + `%%%%`(mk_state_state(s, f), x, ti, mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.TABLES_moduleinst|) -- wf_state: `%`(mk_state_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[$proj_uN_0(x).0]] = ti], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_mem(v_state : state, v_memidx : memidx, nat : nat, nat_0 : nat, var_0 : byte*) : state +relation fun_with_mem: `%%%%%%`(state, memidx, nat, nat, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{s : store, f : frame, x : uN, i : nat, j : nat, b_lst : byte*}(mk_state_state(s, f), x, i, j, b_lst) = mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f) + rule fun_with_mem_case_0{s : store, f : frame, x : uN, i : nat, j : nat, b_lst : byte*}: + `%%%%%%`(mk_state_state(s, f), x, i, j, b_lst, mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]].BYTES_meminst[i : j] = b_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_meminst(v_state : state, v_memidx : memidx, v_meminst : meminst) : state +relation fun_with_meminst: `%%%%`(state, memidx, meminst, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{s : store, f : frame, x : uN, mi : meminst}(mk_state_state(s, f), x, mi) = mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f) + rule fun_with_meminst_case_0{s : store, f : frame, x : uN, mi : meminst}: + `%%%%`(mk_state_state(s, f), x, mi, mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.MEMS_moduleinst|) -- wf_state: `%`(mk_state_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[$proj_uN_0(x).0]] = mi], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_elem(v_state : state, v_elemidx : elemidx, var_0 : ref*) : state +relation fun_with_elem: `%%%%`(state, elemidx, ref*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{s : store, f : frame, x : uN, r_lst : ref*}(mk_state_state(s, f), x, r_lst) = mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f) + rule fun_with_elem_case_0{s : store, f : frame, x : uN, r_lst : ref*}: + `%%%%`(mk_state_state(s, f), x, r_lst, mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.ELEMS_moduleinst|) -- wf_state: `%`(mk_state_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[$proj_uN_0(x).0]].REFS_eleminst = r_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_data(v_state : state, v_dataidx : dataidx, var_0 : byte*) : state +relation fun_with_data: `%%%%`(state, dataidx, byte*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{s : store, f : frame, x : uN, b_lst : byte*}(mk_state_state(s, f), x, b_lst) = mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f) + rule fun_with_data_case_0{s : store, f : frame, x : uN, b_lst : byte*}: + `%%%%`(mk_state_state(s, f), x, b_lst, mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f)) + -- if ($proj_uN_0(x).0 < |f.MODULE_frame.DATAS_moduleinst|) -- wf_state: `%`(mk_state_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[$proj_uN_0(x).0]].BYTES_datainst = b_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_struct(v_state : state, v_structaddr : structaddr, nat : nat, v_fieldval : fieldval) : state +relation fun_with_struct: `%%%%%`(state, structaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{s : store, f : frame, a : nat, i : nat, fv : fieldval}(mk_state_state(s, f), a, i, fv) = mk_state_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + rule fun_with_struct_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(mk_state_state(s, f), a, i, fv, mk_state_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) -- wf_state: `%`(mk_state_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $with_array(v_state : state, v_arrayaddr : arrayaddr, nat : nat, v_fieldval : fieldval) : state +relation fun_with_array: `%%%%%`(state, arrayaddr, nat, fieldval, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{s : store, f : frame, a : nat, i : nat, fv : fieldval}(mk_state_state(s, f), a, i, fv) = mk_state_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + rule fun_with_array_case_0{s : store, f : frame, a : nat, i : nat, fv : fieldval}: + `%%%%%`(mk_state_state(s, f), a, i, fv, mk_state_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) -- wf_state: `%`(mk_state_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_structinst(v_state : state, var_0 : structinst*) : state +relation fun_add_structinst: `%%%`(state, structinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{s : store, f : frame, si_lst : structinst*}(mk_state_state(s, f), si_lst) = mk_state_state(s[STRUCTS_store =++ si_lst], f) + rule fun_add_structinst_case_0{s : store, f : frame, si_lst : structinst*}: + `%%%`(mk_state_state(s, f), si_lst, mk_state_state(s[STRUCTS_store =++ si_lst], f)) -- wf_state: `%`(mk_state_state(s[STRUCTS_store =++ si_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_arrayinst(v_state : state, var_0 : arrayinst*) : state +relation fun_add_arrayinst: `%%%`(state, arrayinst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{s : store, f : frame, ai_lst : arrayinst*}(mk_state_state(s, f), ai_lst) = mk_state_state(s[ARRAYS_store =++ ai_lst], f) + rule fun_add_arrayinst_case_0{s : store, f : frame, ai_lst : arrayinst*}: + `%%%`(mk_state_state(s, f), ai_lst, mk_state_state(s[ARRAYS_store =++ ai_lst], f)) -- wf_state: `%`(mk_state_state(s[ARRAYS_store =++ ai_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $add_exninst(v_state : state, var_0 : exninst*) : state +relation fun_add_exninst: `%%%`(state, exninst*, state) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{s : store, f : frame, exn_lst : exninst*}(mk_state_state(s, f), exn_lst) = mk_state_state(s[EXNS_store =++ exn_lst], f) + rule fun_add_exninst_case_0{s : store, f : frame, exn_lst : exninst*}: + `%%%`(mk_state_state(s, f), exn_lst, mk_state_state(s[EXNS_store =++ exn_lst], f)) -- wf_state: `%`(mk_state_state(s[EXNS_store =++ exn_lst], f)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growtable(v_tableinst : tableinst, nat : nat, v_ref : ref) : tableinst? +relation fun_growtable: `%%%%`(tableinst, nat, ref, tableinst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growtable{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, j_opt : u64?, rt : reftype, r'_lst : ref*, i' : uN}(v_tableinst, v_n, r) = ?(tableinst') + rule fun_growtable_case_0{v_tableinst : tableinst, v_n : nat, r : ref, tableinst' : tableinst, at : addrtype, i : uN, j_opt : u64?, rt : reftype, r'_lst : ref*, i' : uN}: + `%%%%`(v_tableinst, v_n, r, ?(tableinst')) -- wf_tableinst: `%`(tableinst') -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) - -- if (v_tableinst = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst}) + -- where {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS r'_lst} = v_tableinst {at, i, j_opt, r'_lst, rt} -- if (tableinst' = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i', j_opt), rt), REFS r'_lst ++ r^v_n{}}) -- if ($proj_uN_0(i').0 = (|r'_lst| + v_n)) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- j_opt} - def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growtable_case_1{x0 : tableinst, x1 : nat, x2 : ref}: + `%%%%`(x0, x1, x2, ?()) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -def $growmem(v_meminst : meminst, nat : nat) : meminst? +relation fun_growmem: `%%%`(meminst, nat, meminst?) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growmem{v_meminst : meminst, v_n : nat, meminst' : meminst, at : addrtype, i : uN, j_opt : u64?, b_lst : byte*, i' : uN}(v_meminst, v_n) = ?(meminst') + rule fun_growmem_case_0{v_meminst : meminst, v_n : nat, meminst' : meminst, at : addrtype, i : uN, j_opt : u64?, b_lst : byte*, i' : uN}: + `%%%`(v_meminst, v_n, ?(meminst')) -- wf_meminst: `%`(meminst') -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) - -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst}) + -- where {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES b_lst} = v_meminst {at, b_lst, i, j_opt} -- if (meminst' = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i', j_opt)), BYTES b_lst ++ mk_byte_byte(0)^(v_n * (64 * $Ki)){}}) -- if (($proj_uN_0(i').0 : nat <:> rat) = (((|b_lst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (v_n : nat <:> rat))) -- (if ($proj_uN_0(i').0 <= $proj_uN_0(j).0))?{j <- j_opt} - def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() + + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + rule fun_growmem_case_1{x0 : meminst, x1 : nat}: + `%%%`(x0, x1, ?()) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -12485,9 +15012,9 @@ relation Vec_ok: `%|-%:%`(store, vec, vectype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:26.1-26.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:36.1-38.35 rule null{s : store, ht : heaptype, ht' : heaptype}: `%|-%:%`(s, REF_NULL_ref(ht), REF_reftype(?(NULL_null), ht')) -- wf_store: `%`(s) @@ -12496,14 +15023,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:40.1-41.33 rule i31{s : store, i : u31}: `%|-%:%`(s, REF_I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF_I31_NUM_ref(i)) -- wf_reftype: `%`(REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:43.1-45.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_STRUCT_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) @@ -12512,7 +15039,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:47.1-49.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_ARRAY_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) @@ -12521,7 +15048,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:51.1-53.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, REF_FUNC_ADDR_ref(a), REF_reftype(?(), $heaptype_deftype(dt))) -- wf_store: `%`(s) @@ -12530,7 +15057,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:55.1-57.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, REF_EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) -- wf_store: `%`(s) @@ -12540,14 +15067,14 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:59.1-60.35 rule host{s : store, a : addr}: `%|-%:%`(s, REF_HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) -- wf_store: `%`(s) -- wf_ref: `%`(REF_HOST_ADDR_ref(a)) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:62.1-64.38 rule extern{s : store, v_addrref : addrref}: `%|-%:%`(s, REF_EXTERN_ref(v_addrref), REF_reftype(?(), EXTERN_heaptype)) -- wf_store: `%`(s) @@ -12556,7 +15083,7 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- wf_reftype: `%`(REF_reftype(?(), ANY_heaptype)) -- Ref_ok: `%|-%:%`(s, $ref_addrref(v_addrref), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:66.1-69.34 rule sub{s : store, v_ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, v_ref, rt) -- wf_store: `%`(s) @@ -12595,9 +15122,9 @@ relation Val_ok: `%|-%:%`(store, val, valtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:87.1-87.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:89.1-91.28 rule tag{s : store, a : addr, v_taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(v_taginst.TYPE_taginst)) -- wf_store: `%`(s) @@ -12605,7 +15132,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = v_taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:93.1-95.34 rule global{s : store, a : addr, v_globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(v_globalinst.TYPE_globalinst)) -- wf_store: `%`(s) @@ -12613,7 +15140,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = v_globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:97.1-99.28 rule mem{s : store, a : addr, v_meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(v_meminst.TYPE_meminst)) -- wf_store: `%`(s) @@ -12621,7 +15148,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = v_meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:101.1-103.32 rule table{s : store, a : addr, v_tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(v_tableinst.TYPE_tableinst)) -- wf_store: `%`(s) @@ -12629,7 +15156,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = v_tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:105.1-107.30 rule func{s : store, a : addr, v_funcinst : funcinst}: `%|-%:%`(s, FUNC_externaddr(a), FUNC_externtype($typeuse_deftype(v_funcinst.TYPE_funcinst))) -- wf_store: `%`(s) @@ -12637,7 +15164,7 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = v_funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:109.1-112.37 rule sub{s : store, v_externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, v_externaddr, xt) -- wf_store: `%`(s) @@ -12649,77 +15176,44 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_valtype(v_moduleinst : moduleinst, v_valtype : valtype) : valtype +relation fun_inst_valtype: `%%%`(moduleinst, valtype, valtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{v_moduleinst : moduleinst, t : valtype, dt_lst : deftype*}(v_moduleinst, t) = $subst_all_valtype(t, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = v_moduleinst.TYPES_moduleinst) + rule fun_inst_valtype_case_0{v_moduleinst : moduleinst, t : valtype, dt_lst : deftype*, var_0 : valtype}: + `%%%`(v_moduleinst, t, var_0) + -- fun_subst_all_valtype: `%%%`(t, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = v_moduleinst.TYPES_moduleinst {dt_lst} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_reftype(v_moduleinst : moduleinst, v_reftype : reftype) : reftype +relation fun_inst_reftype: `%%%`(moduleinst, reftype, reftype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{v_moduleinst : moduleinst, rt : reftype, dt_lst : deftype*}(v_moduleinst, rt) = $subst_all_reftype(rt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = v_moduleinst.TYPES_moduleinst) + rule fun_inst_reftype_case_0{v_moduleinst : moduleinst, rt : reftype, dt_lst : deftype*, var_0 : reftype}: + `%%%`(v_moduleinst, rt, var_0) + -- fun_subst_all_reftype: `%%%`(rt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = v_moduleinst.TYPES_moduleinst {dt_lst} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_globaltype(v_moduleinst : moduleinst, v_globaltype : globaltype) : globaltype +relation fun_inst_globaltype: `%%%`(moduleinst, globaltype, globaltype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{v_moduleinst : moduleinst, gt : globaltype, dt_lst : deftype*}(v_moduleinst, gt) = $subst_all_globaltype(gt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = v_moduleinst.TYPES_moduleinst) + rule fun_inst_globaltype_case_0{v_moduleinst : moduleinst, gt : globaltype, dt_lst : deftype*, var_0 : globaltype}: + `%%%`(v_moduleinst, gt, var_0) + -- fun_subst_all_globaltype: `%%%`(gt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = v_moduleinst.TYPES_moduleinst {dt_lst} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_memtype(v_moduleinst : moduleinst, v_memtype : memtype) : memtype +relation fun_inst_memtype: `%%%`(moduleinst, memtype, memtype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{v_moduleinst : moduleinst, mt : memtype, dt_lst : deftype*}(v_moduleinst, mt) = $subst_all_memtype(mt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = v_moduleinst.TYPES_moduleinst) + rule fun_inst_memtype_case_0{v_moduleinst : moduleinst, mt : memtype, dt_lst : deftype*, var_0 : memtype}: + `%%%`(v_moduleinst, mt, var_0) + -- fun_subst_all_memtype: `%%%`(mt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = v_moduleinst.TYPES_moduleinst {dt_lst} ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec -def $inst_tabletype(v_moduleinst : moduleinst, v_tabletype : tabletype) : tabletype +relation fun_inst_tabletype: `%%%`(moduleinst, tabletype, tabletype) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{v_moduleinst : moduleinst, tt : tabletype, dt_lst : deftype*}(v_moduleinst, tt) = $subst_all_tabletype(tt, $typeuse_deftype(dt)*{dt <- dt_lst}) - -- if (dt_lst = v_moduleinst.TYPES_moduleinst) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_br_on_null_addr: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_null_null_0{v_val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(v_val) BR_ON_NULL_instr(l)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- wf_instr: `%`(BR_instr(l)) - -- wf_val: `%`(REF_NULL_val(ht)) - -- if (v_val = REF_NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_br_on_non_null_addr: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_non_null_null_0{v_val : val, l : labelidx, ht : heaptype}: - `%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)]) - -- wf_val: `%`(v_val) - -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) - -- wf_val: `%`(REF_NULL_val(ht)) - -- if (v_val = REF_NULL_val(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_ref_is_null_false: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_is_null_true_0{v_ref : ref, ht : heaptype}: - `%`([$instr_ref(v_ref) REF_IS_NULL_instr]) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(REF_IS_NULL_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_ref: `%`(REF_NULL_ref(ht)) - -- if (v_ref = REF_NULL_ref(ht)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_ref_as_non_null_addr: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_as_non_null_null_0{v_ref : ref, ht : heaptype}: - `%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr]) - -- wf_ref: `%`(v_ref) - -- wf_instr: `%`(REF_AS_NON_NULL_instr) - -- wf_instr: `%`(TRAP_instr) - -- wf_ref: `%`(REF_NULL_ref(ht)) - -- if (v_ref = REF_NULL_ref(ht)) + rule fun_inst_tabletype_case_0{v_moduleinst : moduleinst, tt : tabletype, dt_lst : deftype*, var_0 : tabletype}: + `%%%`(v_moduleinst, tt, var_0) + -- fun_subst_all_tabletype: `%%%`(tt, $typeuse_deftype(dt)*{dt <- dt_lst}, var_0) + -- where dt_lst = v_moduleinst.TYPES_moduleinst {dt_lst} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure_before_ref_eq_true: `%`(instr*) @@ -12734,29 +15228,6 @@ relation Step_pure_before_ref_eq_true: `%`(instr*) -- wf_ref: `%`(REF_NULL_ref(ht_2)) -- if ((ref_1 = REF_NULL_ref(ht_1)) /\ (ref_2 = REF_NULL_ref(ht_2))) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_pure_before_ref_eq_false: `%`(instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_eq_true_0{ref_1 : ref, ref_2 : ref}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- ~ Step_pure_before_ref_eq_true: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) - -- if (ref_1 = ref_2) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_eq_null_1{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) - -- wf_ref: `%`(ref_1) - -- wf_ref: `%`(ref_2) - -- wf_instr: `%`(REF_EQ_instr) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- wf_ref: `%`(REF_NULL_ref(ht_1)) - -- wf_ref: `%`(REF_NULL_ref(ht_2)) - -- if ((ref_1 = REF_NULL_ref(ht_1)) /\ (ref_2 = REF_NULL_ref(ht_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -12883,11 +15354,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (v_val = REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_null_addr{v_val : val, l : labelidx}: + rule br_on_null_addr{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NULL_instr(l)], [$instr_val(v_val)]) + -- if (v_val =/= REF_NULL_val(ht)) -- wf_val: `%`(v_val) -- wf_instr: `%`(BR_ON_NULL_instr(l)) - -- ~ Step_pure_before_br_on_null_addr: `%`([$instr_val(v_val) BR_ON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_non_null_null{v_val : val, l : labelidx, ht : heaptype}: @@ -12898,12 +15369,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (v_val = REF_NULL_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_non_null_addr{v_val : val, l : labelidx}: + rule br_on_non_null_addr{v_val : val, l : labelidx, ht : heaptype}: `%~>%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)], [$instr_val(v_val) BR_instr(l)]) + -- if (v_val =/= REF_NULL_val(ht)) -- wf_val: `%`(v_val) -- wf_instr: `%`(BR_ON_NON_NULL_instr(l)) -- wf_instr: `%`(BR_instr(l)) - -- ~ Step_pure_before_br_on_non_null_addr: `%`([$instr_val(v_val) BR_ON_NON_NULL_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: @@ -12993,12 +15464,12 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (v_ref = REF_NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_is_null_false{v_ref : ref}: + rule ref_is_null_false{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_IS_NULL_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) + -- if (v_ref =/= REF_NULL_ref(ht)) -- wf_ref: `%`(v_ref) -- wf_instr: `%`(REF_IS_NULL_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) - -- ~ Step_pure_before_ref_is_null_false: `%`([$instr_ref(v_ref) REF_IS_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_as_non_null_null{v_ref : ref, ht : heaptype}: @@ -13010,11 +15481,11 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (v_ref = REF_NULL_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_as_non_null_addr{v_ref : ref}: + rule ref_as_non_null_addr{v_ref : ref, ht : heaptype}: `%~>%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr], [$instr_ref(v_ref)]) + -- if (v_ref =/= REF_NULL_ref(ht)) -- wf_ref: `%`(v_ref) -- wf_instr: `%`(REF_AS_NON_NULL_instr) - -- ~ Step_pure_before_ref_as_non_null_addr: `%`([$instr_ref(v_ref) REF_AS_NON_NULL_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_eq_null{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: @@ -13028,23 +15499,24 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ((ref_1 = REF_NULL_ref(ht_1)) /\ (ref_2 = REF_NULL_ref(ht_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_eq_true{ref_1 : ref, ref_2 : ref}: + rule ref_eq_true{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- if ((ref_1 =/= REF_NULL_ref(ht_1)) \/ (ref_2 =/= REF_NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF_EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) - -- ~ Step_pure_before_ref_eq_true: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_eq_false{ref_1 : ref, ref_2 : ref}: + rule ref_eq_false{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: `%~>%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr], [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))]) + -- if (ref_1 =/= ref_2) + -- if ((ref_1 =/= REF_NULL_ref(ht_1)) \/ (ref_2 =/= REF_NULL_ref(ht_2))) -- wf_ref: `%`(ref_1) -- wf_ref: `%`(ref_2) -- wf_instr: `%`(REF_EQ_instr) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) - -- ~ Step_pure_before_ref_eq_false: `%`([$instr_ref(ref_1) $instr_ref(ref_2) REF_EQ_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule i31_get_null{ht : heaptype, v_sx : sx}: @@ -13095,49 +15567,54 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_instr: `%`(ANY_CONVERT_EXTERN_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule unop_val{nt : numtype, c_1 : num_, unop : unop_, c : num_}: + rule unop_val{nt : numtype, c_1 : num_, unop : unop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$fun_unop_(nt, unop, c_1)| > 0) - -- if (c <- $fun_unop_(nt, unop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule unop_trap{nt : numtype, c_1 : num_, unop : unop_}: + rule unop_trap{nt : numtype, c_1 : num_, unop : unop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) + -- fun_unop_: `%%%%`(nt, unop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(UNOP_instr(nt, unop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_unop_(nt, unop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule binop_val{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_}: + rule binop_val{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(CONST_instr(nt, c)) - -- if (|$fun_binop_(nt, binop, c_1, c_2)| > 0) - -- if (c <- $fun_binop_(nt, binop, c_1, c_2)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule binop_trap{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_}: + rule binop_trap{nt : numtype, c_1 : num_, c_2 : num_, binop : binop_, var_0 : num_*}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) + -- fun_binop_: `%%%%%`(nt, binop, c_1, c_2, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(CONST_instr(nt, c_2)) -- wf_instr: `%`(BINOP_instr(nt, binop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_binop_(nt, binop, c_1, c_2) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_}: + rule testop{nt : numtype, c_1 : num_, testop : testop_, c : num_, var_0 : u32}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) + -- fun_testop_: `%%%%`(nt, testop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt, c_1)) -- wf_instr: `%`(TESTOP_instr(nt, testop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $fun_testop_(nt, testop, c_1)) + -- if (!($proj_num__0(c)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_, c_2 : num_, relop : relop_, c : num_}: @@ -13150,21 +15627,23 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (!($proj_num__0(c)) = $fun_relop_(nt, relop, c_1, c_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule cvtop_val{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_}: + rule cvtop_val{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, c : num_, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(CONST_instr(nt_2, c)) - -- if (|$fun_cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) - -- if (c <- $fun_cvtop__(nt_1, nt_2, cvtop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule cvtop_trap{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__}: + rule cvtop_trap{nt_1 : numtype, c_1 : num_, nt_2 : numtype, cvtop : cvtop__, var_0 : num_*}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) + -- fun_cvtop__: `%%%%%`(nt_1, nt_2, cvtop, c_1, var_0) -- wf_instr: `%`(CONST_instr(nt_1, c_1)) -- wf_instr: `%`(CVTOP_instr(nt_2, nt_1, cvtop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_cvtop__(nt_1, nt_2, cvtop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_, v_vvunop : vvunop, c : vec_}: @@ -13197,74 +15676,85 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (c <- $vvternop_(V128_vectype, v_vvternop, c_1, c_2, c_3)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vvtestop{c_1 : vec_, c : num_}: + rule vvtestop{c_1 : vec_, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) + -- fun_inez_: `%%%`($vsize(V128_vectype), c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $inez_($vsize(V128_vectype), c_1)) + -- if (!($proj_num__0(c)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vunop_val{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_}: + rule vunop_val{c_1 : vec_, sh : shape, vunop : vunop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$fun_vunop_(sh, vunop, c_1)| > 0) - -- if (c <- $fun_vunop_(sh, vunop, c_1)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vunop_trap{c_1 : vec_, sh : shape, vunop : vunop_}: + rule vunop_trap{c_1 : vec_, sh : shape, vunop : vunop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) + -- fun_vunop_: `%%%%`(sh, vunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VUNOP_instr(sh, vunop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_vunop_(sh, vunop, c_1) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbinop_val{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_}: + rule vbinop_val{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$fun_vbinop_(sh, vbinop, c_1, c_2)| > 0) - -- if (c <- $fun_vbinop_(sh, vbinop, c_1, c_2)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbinop_trap{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_}: + rule vbinop_trap{c_1 : vec_, c_2 : vec_, sh : shape, vbinop : vbinop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) + -- fun_vbinop_: `%%%%%`(sh, vbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VBINOP_instr(sh, vbinop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_vbinop_(sh, vbinop, c_1, c_2) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vternop_val{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_}: + rule vternop_val{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, c : vec_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (|$fun_vternop_(sh, vternop, c_1, c_2, c_3)| > 0) - -- if (c <- $fun_vternop_(sh, vternop, c_1, c_2, c_3)) + -- if (|var_0| > 0) + -- if (c <- var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vternop_trap{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_}: + rule vternop_trap{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh : shape, vternop : vternop_, var_0 : vec_*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) + -- fun_vternop_: `%%%%%%`(sh, vternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VTERNOP_instr(sh, vternop)) -- wf_instr: `%`(TRAP_instr) - -- if ($fun_vternop_(sh, vternop, c_1, c_2, c_3) = []) + -- if (var_0 = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_, v_Jnn : Jnn, v_M : M, c : num_, i_lst : lane_*}: + rule vtestop{c_1 : vec_, v_Jnn : Jnn, v_M : M, c : num_, i_lst : lane_*, var_1_lst : uN*, var_0 : nat}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))], [CONST_instr(I32_numtype, c)]) + -- if (|var_1_lst| = |i_lst|) + -- (if ($proj_lane__2(i) =/= ?()))*{i <- i_lst} + -- (fun_inez_: `%%%`($jsizenn(v_Jnn), !($proj_lane__2(i)), var_1))*{var_1 <- var_1_lst, i <- i_lst} + -- fun_prod: `%%`($proj_uN_0(var_1).0*{var_1 <- var_1_lst}, var_0) -- (wf_lane_: `%%`($fun_lanetype(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))), i))*{i <- i_lst} -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VTESTOP_instr(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), mk_vtestop__0_vtestop_(v_Jnn, v_M, ALL_TRUE_vtestop_Jnn_M))) @@ -13272,63 +15762,68 @@ relation Step_pure: `%~>%`(instr*, instr*) -- wf_shape: `%`(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M))) -- if (i_lst = $lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c_1)) -- if ($proj_num__0(c) =/= ?()) - -- (if ($proj_lane__2(i) =/= ?()))*{i <- i_lst} - -- if ($proj_uN_0(!($proj_num__0(c))).0 = $prod($proj_uN_0($inez_($jsizenn(v_Jnn), !($proj_lane__2(i)))).0*{i <- i_lst})) + -- if ($proj_uN_0(!($proj_num__0(c))).0 = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_}: + rule vrelop{c_1 : vec_, c_2 : vec_, sh : shape, vrelop : vrelop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vrelop_: `%%%%%`(sh, vrelop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VRELOP_instr(sh, vrelop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $fun_vrelop_(sh, vrelop, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_}: + rule vshiftop{c_1 : vec_, i : num_, sh : ishape, vshiftop : vshiftop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) + -- if ($proj_num__0(i) =/= ?()) + -- fun_vshiftop_: `%%%%%`(sh, vshiftop, c_1, !($proj_num__0(i)), var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(VSHIFTOP_instr(sh, vshiftop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($proj_num__0(i) =/= ?()) - -- if (c = $fun_vshiftop_(sh, vshiftop, c_1, !($proj_num__0(i)))) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vbitmask{c_1 : vec_, sh : ishape, c : num_}: + rule vbitmask{c_1 : vec_, sh : ishape, c : num_, var_0 : u32}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) + -- fun_vbitmaskop_: `%%%`(sh, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VBITMASK_instr(sh)) -- wf_instr: `%`(CONST_instr(I32_numtype, c)) -- if ($proj_num__0(c) =/= ?()) - -- if (!($proj_num__0(c)) = $vbitmaskop_(sh, c_1)) + -- if (!($proj_num__0(c)) = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_}: + rule vswizzlop{c_1 : vec_, c_2 : vec_, sh : bshape, swizzlop : vswizzlop_, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vswizzlop_: `%%%%%`(sh, swizzlop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSWIZZLOP_instr(sh, swizzlop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $fun_vswizzlop_(sh, swizzlop, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, i_lst : laneidx*, c : vec_}: + rule vshuffle{c_1 : vec_, c_2 : vec_, sh : bshape, i_lst : laneidx*, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i_lst)], [VCONST_instr(V128_vectype, c)]) + -- fun_vshufflop_: `%%%%%`(sh, i_lst, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VSHUFFLE_instr(sh, i_lst)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vshufflop_(sh, i_lst, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vsplat{v_Lnn : Lnn, c_1 : num_, v_M : M, c : vec_}: + rule vsplat{v_Lnn : Lnn, c_1 : num_, v_M : M, c : vec_, var_0 : lane_}: `%~>%`([CONST_instr($lunpack(v_Lnn), c_1) VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(v_Lnn, c_1, var_0) -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_1)) -- wf_instr: `%`(VSPLAT_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)))) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) - -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lpacknum_(v_Lnn, c_1)^v_M{})) + -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), var_0^v_M{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextract_lane_num{c_1 : vec_, nt : numtype, v_M : M, i : laneidx, c_2 : num_}: @@ -13354,92 +15849,103 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (!($proj_num__0(c_2)) = $extend__($psize(pt), 32, v_sx, !($proj_lane__1($lanes_(`%X%`_shape($lanetype_packtype(pt), mk_dim_dim(v_M)), c_1)[$proj_uN_0(i).0])))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vreplace_lane{c_1 : vec_, v_Lnn : Lnn, c_2 : num_, v_M : M, i : laneidx, c : vec_}: + rule vreplace_lane{c_1 : vec_, v_Lnn : Lnn, c_2 : num_, v_M : M, i : laneidx, c : vec_, var_0 : lane_}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(v_Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)], [VCONST_instr(V128_vectype, c)]) + -- fun_lpacknum_: `%%%`(v_Lnn, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(CONST_instr($lunpack(v_Lnn), c_2)) -- wf_instr: `%`(VREPLACE_LANE_instr(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), i)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) -- wf_shape: `%`(`%X%`_shape(v_Lnn, mk_dim_dim(v_M))) - -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)[[$proj_uN_0(i).0] = $lpacknum_(v_Lnn, c_2)])) + -- if (c = $inv_lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), $lanes_(`%X%`_shape(v_Lnn, mk_dim_dim(v_M)), c_1)[[$proj_uN_0(i).0] = var_0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_}: + rule vextunop{c_1 : vec_, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextunop__: `%%%%%`(sh_1, sh_2, vextunop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VEXTUNOP_instr(sh_2, sh_1, vextunop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($fun_vextunop__(sh_1, sh_2, vextunop, c_1) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_}: + rule vextbinop{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextbinop__: `%%%%%%`(sh_1, sh_2, vextbinop, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VEXTBINOP_instr(sh_2, sh_1, vextbinop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($fun_vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_}: + rule vextternop{c_1 : vec_, c_2 : vec_, c_3 : vec_, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vextternop__: `%%%%%%%`(sh_1, sh_2, vextternop, c_1, c_2, c_3, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_3)) -- wf_instr: `%`(VEXTTERNOP_instr(sh_2, sh_1, vextternop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if ($fun_vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) + -- if (var_0 = c) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, v_sx : sx, c : vec_}: + rule vnarrow{c_1 : vec_, c_2 : vec_, sh_2 : ishape, sh_1 : ishape, v_sx : sx, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, v_sx)], [VCONST_instr(V128_vectype, c)]) + -- fun_vnarrowop__: `%%%%%%`($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_2)) -- wf_instr: `%`(VNARROW_instr(sh_2, sh_1, v_sx)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $vnarrowop__($proj_ishape_0(sh_1).0, $proj_ishape_0(sh_2).0, v_sx, c_1, c_2)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_}: + rule vcvtop{c_1 : vec_, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__, c : vec_, var_0 : vec_}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) + -- fun_vcvtop__: `%%%%%`(sh_1, sh_2, vcvtop, c_1, var_0) -- wf_instr: `%`(VCONST_instr(V128_vectype, c_1)) -- wf_instr: `%`(VCVTOP_instr(sh_2, sh_1, vcvtop)) -- wf_instr: `%`(VCONST_instr(V128_vectype, c)) - -- if (c = $fun_vcvtop__(sh_1, sh_2, vcvtop, c_1)) + -- if (c = var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -def $blocktype_(v_state : state, v_blocktype : blocktype) : instrtype +relation fun_blocktype_: `%%%`(state, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}(z, _IDX_blocktype(x)) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst)) + rule fun_blocktype__case_0{z : state, x : uN, t_1_lst : valtype*, t_2_lst : valtype*}: + `%%%`(z, _IDX_blocktype(x), mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`($fun_type(z, x), FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, t_opt : valtype?}(z, _RESULT_blocktype(t_opt)) = mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt))) + rule fun_blocktype__case_1{z : state, t_opt : valtype?}: + `%%%`(z, _RESULT_blocktype(t_opt), mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt)))) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype(lift(t_opt)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_br_on_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_cast_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule br_on_cast_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_br_on_cast_fail_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_cast_fail_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule br_on_cast_fail_succeed_0{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_throw_ref_handler_next: `%`(config) @@ -13489,23 +15995,6 @@ relation Step_read_before_table_fill_zero: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_table_fill_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_fill_zero_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- ~ Step_read_before_table_fill_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_fill_oob_1{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13535,41 +16024,6 @@ relation Step_read_before_table_copy_le: `%`(config) -- if ($proj_num__0(i_2) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_table_copy_gt: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_le_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(TABLE_GET_instr(y)) - -- wf_instr: `%`(TABLE_SET_instr(x)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(TABLE_COPY_instr(x, y)) - -- ~ Step_read_before_table_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_zero_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_oob_2{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_table_init_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13581,24 +16035,6 @@ relation Step_read_before_table_init_zero: `%`(config) -- if ($proj_num__0(j) =/= ?()) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_table_init_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_init_zero_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- ~ Step_read_before_table_init_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_init_oob_1{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_table(z, x).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_memory_fill_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13609,23 +16045,6 @@ relation Step_read_before_memory_fill_zero: `%`(config) -- if ($proj_num__0(i) =/= ?()) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_memory_fill_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_fill_zero_0{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- ~ Step_read_before_memory_fill_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_fill_oob_1{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_memory_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13656,62 +16075,9 @@ relation Step_read_before_memory_copy_le: `%`(config) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_memory_copy_gt: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_le_0{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) - -- if ($proj_num__0(i_1) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) - -- if ($proj_num__0(i_2) =/= ?()) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) - -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) - -- ~ Step_read_before_memory_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_zero_1{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- ~ Step_read_before_memory_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_oob_2{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i_1) =/= ?()) - -- if ($proj_num__0(i_2) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_mem(z, x_1).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_mem(z, x_2).BYTES_meminst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_memory_init_zero: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if ($proj_num__0(j) =/= ?()) - -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_mem(z, x).BYTES_meminst|) \/ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_data(z, y).BYTES_datainst|)) - -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_memory_init_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_init_zero_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- ~ Step_read_before_memory_init_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- if (v_n = 0) - +relation Step_read_before_memory_init_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_init_oob_1{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: + rule memory_init_oob_0{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) -- wf_instr: `%`(TRAP_instr) @@ -13722,25 +16088,27 @@ relation Step_read_before_memory_init_succ: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_ref_test_false: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_test_true_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: + rule ref_test_true_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_ref_cast_fail: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_cast_succeed_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: + rule ref_cast_succeed_0{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_fill_zero: `%`(config) @@ -13753,24 +16121,6 @@ relation Step_read_before_array_fill_zero: `%`(config) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_array_fill_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_fill_zero_0{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- ~ Step_read_before_array_fill_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_fill_oob_1{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_copy_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13839,7 +16189,8 @@ relation Step_read_before_array_copy_gt: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = $fun_sx(zt_2))) + -- if ($fun_sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero_1{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: @@ -13885,32 +16236,6 @@ relation Step_read_before_array_init_elem_zero: `%`(config) -- if (a < |$fun_arrayinst(z)|) -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Step_read_before_array_init_elem_succ: `%`(config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_elem_zero_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- ~ Step_read_before_array_init_elem_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- if (v_n = 0) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_elem_oob2_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) > |$fun_elem(z, y).REFS_eleminst|) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_elem_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- wf_instr: `%`(TRAP_instr) - -- if ($proj_num__0(i) =/= ?()) - -- if (a < |$fun_arrayinst(z)|) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) > |$fun_arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read_before_array_init_data_zero: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -13921,7 +16246,8 @@ relation Step_read_before_array_init_data_zero: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_0{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -13949,7 +16275,8 @@ relation Step_read_before_array_init_data_num: `%`(config) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_oob1_1{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -13963,30 +16290,33 @@ relation Step_read_before_array_init_data_num: `%`(config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, val_lst : val*, v_m : m, bt : blocktype, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: + rule block{z : state, val_lst : val*, v_m : m, bt : blocktype, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*, var_0 : instrtype}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)]), [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) + -- fun_blocktype_: `%%%`(z, bt, var_0) -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [BLOCK_instr(bt, instr_lst)])) -- wf_instr: `%`(LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- if (var_0 = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, val_lst : val*, v_m : m, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, v_n : n}: + rule loop{z : state, val_lst : val*, v_m : m, bt : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*, v_n : n, var_0 : instrtype}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)]), [LABEL__instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)]) + -- fun_blocktype_: `%%%`(z, bt, var_0) -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [LOOP_instr(bt, instr_lst)])) -- wf_instr: `%`(LABEL__instr(v_m, [LOOP_instr(bt, instr_lst)], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- if (var_0 = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_cast_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule br_on_cast_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref) BR_instr(l)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) -- wf_instr: `%`(BR_instr(l)) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -13995,13 +16325,14 @@ relation Step_read: `%~>%`(config, instr*) -- ~ Step_read_before_br_on_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_instr(l, rt_1, rt_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule br_on_cast_fail_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule br_on_cast_fail_succeed{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, var_0 : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [$instr_ref(v_ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt_2, var_0) -- wf_reftype: `%`(rt) -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule br_on_cast_fail_fail{s : store, f : frame, v_ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -14027,18 +16358,20 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule call_ref_func{z : state, val_lst : val*, v_n : n, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*}: + rule call_ref_func{z : state, val_lst : val*, v_n : n, a : addr, yy : typeuse, v_m : m, f : frame, instr_lst : instr*, fi : funcinst, t_1_lst : valtype*, t_2_lst : valtype*, x : idx, t_lst : valtype*, var_0_lst : val?*}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [FRAME__instr(v_m, f, [LABEL__instr(v_m, [], instr_lst)])]) + -- if (|var_0_lst| = |t_lst|) + -- (fun_default_: `%%`(t, var_0))*{var_0 <- var_0_lst, t <- t_lst} -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(a) CALL_REF_instr(yy)])) -- wf_instr: `%`(FRAME__instr(v_m, f, [LABEL__instr(v_m, [], instr_lst)])) -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- wf_funccode: `%`(FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) - -- wf_frame: `%`({LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ $default_(t)*{t <- t_lst}, MODULE fi.MODULE_funcinst}) + -- wf_frame: `%`({LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ var_0_lst, MODULE fi.MODULE_funcinst}) -- if (a < |$fun_funcinst(z)|) -- if ($fun_funcinst(z)[a] = fi) -- Expand: `%~~%`(fi.TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- t_lst}, instr_lst)) - -- if (f = {LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ $default_(t)*{t <- t_lst}, MODULE fi.MODULE_funcinst}) + -- if (f = {LOCALS ?(v_val)^v_n{v_val <- val_lst} ++ var_0_lst, MODULE fi.MODULE_funcinst}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: @@ -14157,12 +16490,13 @@ relation Step_read: `%~>%`(config, instr*) -- ~ Step_read_before_throw_ref_handler_next: `%`(mk_config_config(z, [HANDLER__instr(v_n, [v_catch] ++ catch'_lst, [REF_EXN_ADDR_instr(a) THROW_REF_instr])])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, val_lst : val*, v_m : m, bt : blocktype, catch_lst : catch*, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*}: + rule try_table{z : state, val_lst : val*, v_m : m, bt : blocktype, catch_lst : catch*, instr_lst : instr*, v_n : n, t_1_lst : valtype*, t_2_lst : valtype*, var_0 : instrtype}: `%~>%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)]), [HANDLER__instr(v_n, catch_lst, [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])]) + -- fun_blocktype_: `%%%`(z, bt, var_0) -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_m{v_val <- val_lst} ++ [TRY_TABLE_instr(bt, mk_list_list(catch_lst), instr_lst)])) -- wf_instr: `%`(HANDLER__instr(v_n, catch_lst, [LABEL__instr(v_n, [], $instr_val(v_val)^v_m{v_val <- val_lst} ++ instr_lst)])) -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- if ($blocktype_(z, bt) = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) + -- if (var_0 = mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule local_get{z : state, x : idx, v_val : val}: @@ -14213,21 +16547,23 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_zero{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) - -- ~ Step_read_before_table_fill_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (v_n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE_SET_instr(x)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE_FILL_instr(x)) - -- ~ Step_read_before_table_fill_succ: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: @@ -14239,17 +16575,21 @@ relation Step_read: `%~>%`(config, instr*) -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) > |$fun_table(z, x_1).REFS_tableinst|) \/ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) > |$fun_table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + rule table_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), []) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) - -- ~ Step_read_before_table_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + rule table_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) @@ -14259,14 +16599,16 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE_COPY_instr(x, y)) - -- ~ Step_read_before_table_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx}: + rule table_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x : idx, y : idx, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_GET_instr(y) TABLE_SET_instr(x) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) TABLE_COPY_instr(x, y)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_table(z, x_1).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_table(z, x_2).REFS_tableinst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) @@ -14276,7 +16618,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE_COPY_instr(x, y)) - -- ~ Step_read_before_table_copy_gt: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) TABLE_COPY_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -14290,8 +16631,10 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule table_init_zero{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) - -- ~ Step_read_before_table_init_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14300,6 +16643,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_table(z, x).REFS_tableinst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(TABLE_SET_instr(x)) @@ -14307,7 +16652,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(TABLE_INIT_instr(x, y)) - -- ~ Step_read_before_table_init_succ: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule load_num_oob{z : state, at : addrtype, i : num_, nt : numtype, x : idx, ao : memarg}: @@ -14456,21 +16800,24 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_fill_zero{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) - -- ~ Step_read_before_memory_fill_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_FILL_instr(x)]) + rule memory_fill_succ{z : state, at : addrtype, i : num_, v_val : val, v_n : n, x : idx, var_0 : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)]), [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (v_n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY_FILL_instr(x)) - -- ~ Step_read_before_memory_fill_succ: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_val(v_val) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_oob{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: @@ -14484,42 +16831,49 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_copy_zero{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), []) + -- if ($proj_num__0(i_1) =/= ?()) + -- if ($proj_num__0(i_2) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) - -- ~ Step_read_before_memory_copy_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) + rule memory_copy_le{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) - -- ~ Step_read_before_memory_copy_le: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- if ($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) + rule memory_copy_gt{z : state, at_1 : addrtype, i_1 : num_, at_2 : addrtype, i_2 : num_, at' : addrtype, v_n : n, x_1 : idx, x_2 : idx, var_0 : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)]), [CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, var_0) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, var_0) CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if ($proj_uN_0(!($proj_num__0(i_1))).0 > $proj_uN_0(!($proj_num__0(i_2))).0) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_mem(z, x_1).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_mem(z, x_2).BYTES_meminst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), mk_num__0_num_(at_1, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), mk_num__0_num_(at_2, mk_uN_uN((((($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) - -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, $memarg0)) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, $memarg0)) + -- wf_instr: `%`(LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x_2, var_0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x_1, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_1), i_1)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at_2), i_2)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY_COPY_instr(x_1, x_2)) - -- ~ Step_read_before_memory_copy_gt: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at_1), i_1) CONST_instr($numtype_addrtype(at_2), i_2) CONST_instr($numtype_addrtype(at'), mk_num__0_num_(at', mk_uN_uN(v_n))) MEMORY_COPY_instr(x_1, x_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_oob{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -14533,25 +16887,29 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule memory_init_zero{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if ($proj_num__0(j) =/= ?()) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) - -- ~ Step_read_before_memory_init_zero: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_INIT_instr(x, y)]) + rule memory_init_succ{z : state, at : addrtype, i : num_, j : num_, v_n : n, x : idx, y : idx, var_0 : memarg}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)]), [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0))) STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, var_0) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) MEMORY_INIT_instr(x, y)]) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_data(z, y).BYTES_datainst|) -- if ($proj_num__0(j) =/= ?()) -- if ($proj_num__0(i) =/= ?()) + -- fun_memarg0: `%`(var_0) + -- if (v_n =/= 0) + -- if ((($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_mem(z, x).BYTES_meminst|) /\ (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_data(z, y).BYTES_datainst|)) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), i)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN($proj_byte_0($fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0]).0)))) - -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, $memarg0)) + -- wf_instr: `%`(STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, var_0)) -- wf_instr: `%`(CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(MEMORY_INIT_instr(x, y)) - -- ~ Step_read_before_memory_init_succ: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(x, y)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_null_idx{z : state, x : idx}: @@ -14567,14 +16925,15 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(REF_FUNC_ADDR_instr($fun_moduleinst(z).FUNCS_moduleinst[$proj_uN_0(x).0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_test_true{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: + rule ref_test_true{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)]), [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(1)))) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_test_false{s : store, f : frame, v_ref : ref, rt : reftype}: @@ -14584,13 +16943,14 @@ relation Step_read: `%~>%`(config, instr*) -- ~ Step_read_before_ref_test_false: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_TEST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref_cast_succeed{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype}: + rule ref_cast_succeed{s : store, f : frame, v_ref : ref, rt : reftype, rt' : reftype, var_0 : reftype}: `%~>%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)]), [$instr_ref(v_ref)]) + -- fun_inst_reftype: `%%%`(f.MODULE_frame, rt, var_0) -- wf_reftype: `%`(rt') -- wf_config: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}) -- Ref_ok: `%|-%:%`(s, v_ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', var_0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule ref_cast_fail{s : store, f : frame, v_ref : ref, rt : reftype}: @@ -14600,15 +16960,19 @@ relation Step_read: `%~>%`(config, instr*) -- ~ Step_read_before_ref_cast_fail: `%`(mk_config_config(mk_state_state(s, f), [$instr_ref(v_ref) REF_CAST_instr(rt)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*}: + rule struct_new_default{z : state, x : idx, val_lst : val*, mut_opt_lst : mut?*, zt_lst : storagetype*, var_1_lst : valtype*, var_0_lst : val?*}: `%~>%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)]), $instr_val(v_val)*{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]) + -- if (|var_1_lst| = |zt_lst|) + -- (fun_unpack: `%%`(zt, var_1))*{var_1 <- var_1_lst, zt <- zt_lst} + -- if (|var_1_lst| = |var_0_lst|) + -- (fun_default_: `%%`(var_1, var_0))*{var_1 <- var_1_lst, var_0 <- var_0_lst} -- (wf_val: `%`(v_val))*{v_val <- val_lst} -- wf_config: `%`(mk_config_config(z, [STRUCT_NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(STRUCT_NEW_instr(x)) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- if (|val_lst| = |zt_lst|) - -- (if ($default_($unpack(zt)) = ?(v_val)))*{v_val <- val_lst, zt <- zt_lst} + -- if (|var_0_lst| = |val_lst|) + -- (if (var_0 = ?(v_val)))*{var_0 <- var_0_lst, v_val <- val_lst} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule struct_get_null{z : state, ht : heaptype, sx_opt : sx?, x : idx, i : u32}: @@ -14617,24 +16981,28 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(TRAP_instr) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)]), [$instr_val($unpackfield_(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0]))]) + rule struct_get_struct{z : state, a : addr, sx_opt : sx?, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*, var_0 : val?}: + `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) -- if ($proj_uN_0(i).0 < |zt_lst|) -- if ($proj_uN_0(i).0 < |$fun_structinst(z)[a].FIELDS_structinst|) -- if (a < |$fun_structinst(z)|) + -- fun_unpackfield_: `%%%%`(zt_lst[$proj_uN_0(i).0], sx_opt, $fun_structinst(z)[a].FIELDS_structinst[$proj_uN_0(i).0], var_0) -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) STRUCT_GET_instr(sx_opt, x, i)])) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_new_default{z : state, v_n : n, x : idx, v_val : val, mut_opt : mut?, zt : storagetype}: + rule array_new_default{z : state, v_n : n, x : idx, v_val : val, mut_opt : mut?, zt : storagetype, var_1 : valtype, var_0 : val?}: `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)]), $instr_val(v_val)^v_n{} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- fun_unpack: `%%`(zt, var_1) + -- fun_default_: `%%`(var_1, var_0) -- wf_val: `%`(v_val) -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DEFAULT_instr(x)])) -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) - -- if ($default_($unpack(zt)) = ?(v_val)) + -- if (var_0 = ?(v_val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_new_elem_oob{z : state, i : num_, v_n : n, x : idx, y : idx}: @@ -14661,19 +17029,23 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(i) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?}: - `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^v_n{c <- c_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) - -- (if ($cunpack(zt) =/= ?()))^v_n{c <- c_lst} + rule array_new_data_num{z : state, i : num_, v_n : n, x : idx, y : idx, zt : storagetype, c_lst : lit_*, mut_opt : mut?, var_1_lst : lit_*, var_0_lst : instr*}: + `%~>%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)]), var_0_lst ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]) + -- (fun_cunpacknum_: `%%%`(zt, c, var_1))^v_n{var_1 <- var_1_lst, c <- c_lst} + -- (if ($cunpack(zt) =/= ?()))^v_n{var_1 <- var_1_lst} + -- (fun_const: `%%%`(!($cunpack(zt)), var_1, var_0))^v_n{var_1 <- var_1_lst, var_0 <- var_0_lst} -- (wf_lit_: `%%`(zt, c))*{c <- c_lst} -- wf_config: `%`(mk_config_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_NEW_DATA_instr(x, y)])) -- wf_instr: `%`(ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) + -- if ($zsize(zt) =/= ?()) -- if ($proj_num__0(i) =/= ?()) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^v_n{c <- c_lst}, (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(i))).0 : ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_get_null{z : state, ht : heaptype, i : num_, sx_opt : sx?, x : idx}: @@ -14691,11 +17063,13 @@ relation Step_read: `%~>%`(config, instr*) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_get_array{z : state, a : addr, i : num_, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?}: - `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [$instr_val($unpackfield_(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0]))]) + rule array_get_array{z : state, a : addr, i : num_, sx_opt : sx?, x : idx, zt : storagetype, mut_opt : mut?, var_0 : val?}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)]), [$instr_val(!(var_0))]) + -- if (var_0 =/= ?()) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$fun_arrayinst(z)|) -- if ($proj_num__0(i) =/= ?()) + -- fun_unpackfield_: `%%%%`(zt, sx_opt, $fun_arrayinst(z)[a].FIELDS_arrayinst[$proj_uN_0(!($proj_num__0(i))).0], var_0) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY_GET_instr(sx_opt, x)])) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) @@ -14731,14 +17105,19 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_zero{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), []) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) - -- ~ Step_read_before_array_fill_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_fill_succ{z : state, a : addr, i : num_, v_val : val, v_n : n, x : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_FILL_instr(x)]) -- if ($proj_num__0(i) =/= ?()) + -- if (v_n =/= 0) + -- if (a < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) @@ -14746,7 +17125,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY_FILL_instr(x)) - -- ~ Step_read_before_array_fill_succ: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_FILL_instr(x)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_null1{z : state, ht_1 : heaptype, i_1 : num_, v_ref : ref, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: @@ -14781,8 +17159,13 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_zero{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), []) + -- if ($proj_num__0(i_2) =/= ?()) + -- if (a_2 < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if ($proj_num__0(i_1) =/= ?()) + -- if (a_1 < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) - -- ~ Step_read_before_array_copy_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14790,6 +17173,11 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)]), [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY_GET_instr(sx_opt, x_2) ARRAY_SET_instr(x_1) REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_1))).0 + 1)))) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i_2))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_COPY_instr(x_1, x_2)]) -- if ($proj_num__0(i_1) =/= ?()) -- if ($proj_num__0(i_2) =/= ?()) + -- if (v_n =/= 0) + -- if (a_2 < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_2))).0 + v_n) <= |$fun_arrayinst(z)[a_2].FIELDS_arrayinst|) + -- if (a_1 < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 + v_n) <= |$fun_arrayinst(z)[a_1].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a_1)) -- wf_instr: `%`(CONST_instr(I32_numtype, i_1)) @@ -14802,9 +17190,9 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY_COPY_instr(x_1, x_2)) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) - -- ~ Step_read_before_array_copy_le: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) - -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = $fun_sx(zt_2))) + -- if ($fun_sx(zt_2) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(i_1))).0 <= $proj_uN_0(!($proj_num__0(i_2))).0) /\ (sx_opt = !($fun_sx(zt_2)))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_copy_gt{z : state, a_1 : addr, i_1 : num_, a_2 : addr, i_2 : num_, v_n : n, x_1 : idx, x_2 : idx, sx_opt : sx?, mut_opt : mut?, zt_2 : storagetype}: @@ -14825,7 +17213,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) -- ~ Step_read_before_array_copy_gt: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF_ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_COPY_instr(x_1, x_2)])) -- Expand: `%~~%`($fun_type(z, x_2), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt_2))) - -- if (sx_opt = $fun_sx(zt_2)) + -- if ($fun_sx(zt_2) =/= ?()) + -- if (sx_opt = !($fun_sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_null{z : state, ht : heaptype, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -14853,8 +17242,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_elem_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), []) + -- if ($proj_num__0(j) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) + -- if ($proj_num__0(i) =/= ?()) + -- if (a < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) - -- ~ Step_read_before_array_init_elem_zero: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -14862,6 +17255,10 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_ref(v_ref) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_ELEM_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if (v_n =/= 0) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + v_n) <= |$fun_elem(z, y).REFS_eleminst|) + -- if (a < |$fun_arrayinst(z)|) + -- if (($proj_uN_0(!($proj_num__0(i))).0 + v_n) <= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) -- wf_ref: `%`(v_ref) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) @@ -14871,7 +17268,6 @@ relation Step_read: `%~>%`(config, instr*) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + 1))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY_INIT_ELEM_instr(x, y)) - -- ~ Step_read_before_array_init_elem_succ: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_ELEM_instr(x, y)])) -- if ($proj_uN_0(!($proj_num__0(j))).0 < |$fun_elem(z, y).REFS_eleminst|) -- if (v_ref = $fun_elem(z, y).REFS_eleminst[$proj_uN_0(!($proj_num__0(j))).0]) @@ -14898,7 +17294,8 @@ relation Step_read: `%~>%`(config, instr*) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- if ($proj_num__0(j) =/= ?()) - -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) + -- if ($zsize(zt) =/= ?()) + -- if (($proj_uN_0(!($proj_num__0(j))).0 + ((((v_n * !($zsize(zt))) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule array_init_data_zero{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx}: @@ -14908,24 +17305,27 @@ relation Step_read: `%~>%`(config, instr*) -- if (v_n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?}: - `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) + rule array_init_data_num{z : state, a : addr, i : num_, j : num_, v_n : n, x : idx, y : idx, zt : storagetype, c : lit_, mut_opt : mut?, var_1 : lit_, var_0 : instr}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)]), [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) var_0 ARRAY_SET_instr(x) REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1)))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) ARRAY_INIT_DATA_instr(x, y)]) -- if ($proj_num__0(i) =/= ?()) -- if ($proj_num__0(j) =/= ?()) + -- if ($zsize(zt) =/= ?()) + -- fun_cunpacknum_: `%%%`(zt, c, var_1) + -- if ($cunpack(zt) =/= ?()) + -- fun_const: `%%%`(!($cunpack(zt)), var_1, var_0) -- wf_lit_: `%%`(zt, c) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- wf_instr: `%`(REF_ARRAY_ADDR_instr(a)) -- wf_instr: `%`(CONST_instr(I32_numtype, i)) -- wf_instr: `%`(ARRAY_SET_instr(x)) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(i))).0 + 1))))) - -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) + -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(($proj_uN_0(!($proj_num__0(j))).0 + (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN((((v_n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))) -- wf_instr: `%`(ARRAY_INIT_DATA_instr(x, y)) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- ~ Step_read_before_array_init_data_num: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) ARRAY_INIT_DATA_instr(x, y)])) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) - -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($zbytes_(zt, c) = $fun_data(z, y).BYTES_datainst[$proj_uN_0(!($proj_num__0(j))).0 : (((!($zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -14975,28 +17375,32 @@ relation Step: `%~>%`(config, config) -- Step: `%~>%`(mk_config_config(mk_state_state(s, f'), instr_lst), mk_config_config(mk_state_state(s', f''), instr'_lst)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 - rule throw{z : state, val_lst : val*, v_n : n, x : idx, exn : exninst, a : addr, t_lst : valtype*}: - `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + rule throw{z : state, val_lst : val*, v_n : n, x : idx, exn : exninst, a : addr, t_lst : valtype*, var_0 : state}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)]), mk_config_config(var_0, [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + -- fun_add_exninst: `%%%`(z, [exn], var_0) -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [THROW_instr(x)])) - -- wf_config: `%`(mk_config_config($add_exninst(z, [exn]), [REF_EXN_ADDR_instr(a) THROW_REF_instr])) + -- wf_config: `%`(mk_config_config(var_0, [REF_EXN_ADDR_instr(a) THROW_REF_instr])) -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if ($proj_uN_0(x).0 < |$fun_tagaddr(z)|) -- wf_exninst: `%`({TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) - -- Expand: `%~~%`($as_deftype($fun_tag(z, x).TYPE_taginst), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) + -- if ($as_deftype($fun_tag(z, x).TYPE_taginst) =/= ?()) + -- Expand: `%~~%`(!($as_deftype($fun_tag(z, x).TYPE_taginst)), FUNC_comptype(mk_list_resulttype(t_lst), mk_list_resulttype([]))) -- if (a = |$fun_exninst(z)|) -- if (exn = {TAG $fun_tagaddr(z)[$proj_uN_0(x).0], FIELDS val_lst}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 - rule local_set{z : state, v_val : val, x : idx}: - `%~>%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)]), mk_config_config($with_local(z, x, v_val), [])) + rule local_set{z : state, v_val : val, x : idx, var_0 : state}: + `%~>%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)]), mk_config_config(var_0, [])) + -- fun_with_local: `%%%%`(z, x, v_val, var_0) -- wf_config: `%`(mk_config_config(z, [$instr_val(v_val) LOCAL_SET_instr(x)])) - -- wf_config: `%`(mk_config_config($with_local(z, x, v_val), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 - rule global_set{z : state, v_val : val, x : idx}: - `%~>%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)]), mk_config_config($with_global(z, x, v_val), [])) + rule global_set{z : state, v_val : val, x : idx, var_0 : state}: + `%~>%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)]), mk_config_config(var_0, [])) + -- fun_with_global: `%%%%`(z, x, v_val, var_0) -- wf_config: `%`(mk_config_config(z, [$instr_val(v_val) GLOBAL_SET_instr(x)])) - -- wf_config: `%`(mk_config_config($with_global(z, x, v_val), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 rule table_set_oob{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: @@ -15007,32 +17411,37 @@ relation Step: `%~>%`(config, config) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 - rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) + rule table_set_val{z : state, at : addrtype, i : num_, v_ref : ref, x : idx, var_0 : state}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)]), mk_config_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_table: `%%%%%`(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) $instr_ref(v_ref) TABLE_SET_instr(x)])) - -- wf_config: `%`(mk_config_config($with_table(z, x, $proj_uN_0(!($proj_num__0(i))).0, v_ref), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) -- if ($proj_uN_0(!($proj_num__0(i))).0 < |$fun_table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 - rule table_grow_succeed{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, ti : tableinst}: - `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) + rule table_grow_succeed{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, ti : tableinst, var_1 : tableinst?, var_0 : state}: + `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) + -- fun_growtable: `%%%%`($fun_table(z, x), v_n, v_ref, var_1) + -- fun_with_tableinst: `%%%%`(z, x, ti, var_0) -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)])) - -- wf_config: `%`(mk_config_config($with_tableinst(z, x, ti), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) - -- if ($growtable($fun_table(z, x), v_n, v_ref) =/= ?()) - -- if (ti = !($growtable($fun_table(z, x), v_n, v_ref))) + -- wf_config: `%`(mk_config_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(|$fun_table(z, x).REFS_tableinst|)))])) + -- if (var_1 =/= ?()) + -- if (ti = !(var_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 - rule table_grow_fail{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx}: - `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + rule table_grow_fail{z : state, v_ref : ref, at : addrtype, v_n : n, x : idx, var_0 : nat}: + `%~>%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) -- wf_config: `%`(mk_config_config(z, [$instr_ref(v_ref) CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) TABLE_GROW_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(var_0)))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 - rule elem_drop{z : state, x : idx}: - `%~>%`(mk_config_config(z, [ELEM_DROP_instr(x)]), mk_config_config($with_elem(z, x, []), [])) + rule elem_drop{z : state, x : idx, var_0 : state}: + `%~>%`(mk_config_config(z, [ELEM_DROP_instr(x)]), mk_config_config(var_0, [])) + -- fun_with_elem: `%%%%`(z, x, [], var_0) -- wf_config: `%`(mk_config_config(z, [ELEM_DROP_instr(x)])) - -- wf_config: `%`(mk_config_config($with_elem(z, x, []), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 rule store_num_oob{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg}: @@ -15043,11 +17452,12 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 - rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + rule store_num_val{z : state, at : addrtype, i : num_, nt : numtype, c : num_, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), mk_config_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)])) - -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) -- if (b_lst = $nbytes_(nt, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 @@ -15059,11 +17469,12 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 - rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + rule store_pack_val{z : state, at : addrtype, i : num_, v_Inn : Inn, c : num_, v_n : n, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)]), mk_config_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) CONST_instr($numtype_addrtype(v_Inn), c) STORE_instr($numtype_addrtype(v_Inn), ?(mk_storeop__0_storeop_(v_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(v_n)))), x, ao)])) - -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) -- if ($proj_num__0(c) =/= ?()) -- if (b_lst = $ibytes_(v_n, $wrap__($size($numtype_addrtype(v_Inn)), v_n, !($proj_num__0(c))))) @@ -15076,11 +17487,12 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 - rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + rule vstore_val{z : state, at : addrtype, i : num_, c : vec_, x : idx, ao : memarg, b_lst : byte*, var_0 : state}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), mk_config_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)])) - -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) -- if (b_lst = $vbytes_(V128_vectype, c)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 @@ -15092,11 +17504,12 @@ relation Step: `%~>%`(config, config) -- if ((($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0) + v_N) > |$fun_mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 - rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + rule vstore_lane_val{z : state, at : addrtype, i : num_, c : vec_, v_N : N, x : idx, ao : memarg, j : laneidx, b_lst : byte*, v_Jnn : Jnn, v_M : M, var_0 : state}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)]), mk_config_config(var_0, [])) -- if ($proj_num__0(i) =/= ?()) + -- fun_with_mem: `%%%%%%`(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, mk_sz_sz(v_N), x, ao, j)])) - -- wf_config: `%`(mk_config_config($with_mem(z, x, ($proj_uN_0(!($proj_num__0(i))).0 + $proj_uN_0(ao.OFFSET_memarg).0), (((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b_lst), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) -- if ($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]) =/= ?()) -- if ($proj_uN_0(j).0 < |$lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)|) -- wf_uN: `%%`(v_N, mk_uN_uN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0)) @@ -15105,35 +17518,42 @@ relation Step: `%~>%`(config, config) -- if (b_lst = $ibytes_(v_N, mk_uN_iN($proj_uN_0(!($proj_lane__2($lanes_(`%X%`_shape($lanetype_Jnn(v_Jnn), mk_dim_dim(v_M)), c)[$proj_uN_0(j).0]))).0))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 - rule memory_grow_succeed{z : state, at : addrtype, v_n : n, x : idx, mi : meminst}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + rule memory_grow_succeed{z : state, at : addrtype, v_n : n, x : idx, mi : meminst, var_1 : meminst?, var_0 : state}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- fun_growmem: `%%%`($fun_mem(z, x), v_n, var_1) + -- fun_with_meminst: `%%%%`(z, x, mi, var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)])) - -- wf_config: `%`(mk_config_config($with_meminst(z, x, mi), [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) - -- if ($growmem($fun_mem(z, x), v_n) =/= ?()) - -- if (mi = !($growmem($fun_mem(z, x), v_n))) + -- wf_config: `%`(mk_config_config(var_0, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN((((|$fun_mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))))])) + -- if (var_1 =/= ?()) + -- if (mi = !(var_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 - rule memory_grow_fail{z : state, at : addrtype, v_n : n, x : idx}: - `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + rule memory_grow_fail{z : state, at : addrtype, v_n : n, x : idx, var_0 : nat}: + `%~>%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)]), mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(var_0)))])) + -- fun_inv_signed_: `%%%`($size($numtype_addrtype(at)), - (1 : nat <:> int), var_0) -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(v_n))) MEMORY_GROW_instr(x)])) - -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN($inv_signed_($size($numtype_addrtype(at)), - (1 : nat <:> int)))))])) + -- wf_config: `%`(mk_config_config(z, [CONST_instr($numtype_addrtype(at), mk_num__0_num_(at, mk_uN_uN(var_0)))])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 - rule data_drop{z : state, x : idx}: - `%~>%`(mk_config_config(z, [DATA_DROP_instr(x)]), mk_config_config($with_data(z, x, []), [])) + rule data_drop{z : state, x : idx, var_0 : state}: + `%~>%`(mk_config_config(z, [DATA_DROP_instr(x)]), mk_config_config(var_0, [])) + -- fun_with_data: `%%%%`(z, x, [], var_0) -- wf_config: `%`(mk_config_config(z, [DATA_DROP_instr(x)])) - -- wf_config: `%`(mk_config_config($with_data(z, x, []), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 - rule struct_new{z : state, val_lst : val*, v_n : n, x : idx, si : structinst, a : addr, mut_opt_lst : mut?*, zt_lst : storagetype*}: - `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]), mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) + rule struct_new{z : state, val_lst : val*, v_n : n, x : idx, si : structinst, a : addr, mut_opt_lst : mut?*, zt_lst : storagetype*, var_1_lst : fieldval?*, var_0 : state}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)]), mk_config_config(var_0, [REF_STRUCT_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, v_val, var_1))^v_n{var_1 <- var_1_lst, v_val <- val_lst, zt <- zt_lst} + -- fun_add_structinst: `%%%`(z, [si], var_0) -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [STRUCT_NEW_instr(x)])) - -- wf_config: `%`(mk_config_config($add_structinst(z, [si]), [REF_STRUCT_ADDR_instr(a)])) + -- wf_config: `%`(mk_config_config(var_0, [REF_STRUCT_ADDR_instr(a)])) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) - -- wf_structinst: `%`({TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst, zt <- zt_lst}}) + -- (if (var_1 =/= ?()))^v_n{var_1 <- var_1_lst} + -- wf_structinst: `%`({TYPE $fun_type(z, x), FIELDS !(var_1)^v_n{var_1 <- var_1_lst}}) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)^v_n{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- if (a = |$fun_structinst(z)|) - -- if (si = {TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst, zt <- zt_lst}}) + -- if (si = {TYPE $fun_type(z, x), FIELDS !(var_1)^v_n{var_1 <- var_1_lst}}) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 rule struct_set_null{z : state, ht : heaptype, v_val : val, x : idx, i : u32}: @@ -15142,23 +17562,29 @@ relation Step: `%~>%`(config, config) -- wf_config: `%`(mk_config_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 - rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*}: - `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt_lst[$proj_uN_0(i).0], v_val)), [])) + rule struct_set_struct{z : state, a : addr, v_val : val, x : idx, i : u32, zt_lst : storagetype*, mut_opt_lst : mut?*, var_1 : fieldval?, var_0 : state}: + `%~>%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)]), mk_config_config(var_0, [])) -- if ($proj_uN_0(i).0 < |zt_lst|) + -- fun_packfield_: `%%%`(zt_lst[$proj_uN_0(i).0], v_val, var_1) + -- if (var_1 =/= ?()) + -- fun_with_struct: `%%%%%`(z, a, $proj_uN_0(i).0, !(var_1), var_0) -- wf_config: `%`(mk_config_config(z, [REF_STRUCT_ADDR_instr(a) $instr_val(v_val) STRUCT_SET_instr(x, i)])) - -- wf_config: `%`(mk_config_config($with_struct(z, a, $proj_uN_0(i).0, $packfield_(zt_lst[$proj_uN_0(i).0], v_val)), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) -- wf_comptype: `%`(STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) -- Expand: `%~~%`($fun_type(z, x), STRUCT_comptype(mk_list_list(mk_fieldtype_fieldtype(mut_opt, zt)*{mut_opt <- mut_opt_lst, zt <- zt_lst}))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 - rule array_new_fixed{z : state, val_lst : val*, v_n : n, x : idx, ai : arrayinst, a : addr, mut_opt : mut?, zt : storagetype}: - `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]), mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) + rule array_new_fixed{z : state, val_lst : val*, v_n : n, x : idx, ai : arrayinst, a : addr, mut_opt : mut?, zt : storagetype, var_1_lst : fieldval?*, var_0 : state}: + `%~>%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))]), mk_config_config(var_0, [REF_ARRAY_ADDR_instr(a)])) + -- (fun_packfield_: `%%%`(zt, v_val, var_1))^v_n{var_1 <- var_1_lst, v_val <- val_lst} + -- fun_add_arrayinst: `%%%`(z, [ai], var_0) -- wf_config: `%`(mk_config_config(z, $instr_val(v_val)^v_n{v_val <- val_lst} ++ [ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n))])) - -- wf_config: `%`(mk_config_config($add_arrayinst(z, [ai]), [REF_ARRAY_ADDR_instr(a)])) + -- wf_config: `%`(mk_config_config(var_0, [REF_ARRAY_ADDR_instr(a)])) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) - -- wf_arrayinst: `%`({TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst}}) + -- (if (var_1 =/= ?()))^v_n{var_1 <- var_1_lst} + -- wf_arrayinst: `%`({TYPE $fun_type(z, x), FIELDS !(var_1)^v_n{var_1 <- var_1_lst}}) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) - -- if ((a = |$fun_arrayinst(z)|) /\ (ai = {TYPE $fun_type(z, x), FIELDS $packfield_(zt, v_val)^v_n{v_val <- val_lst}})) + -- if ((a = |$fun_arrayinst(z)|) /\ (ai = {TYPE $fun_type(z, x), FIELDS !(var_1)^v_n{var_1 <- var_1_lst}})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 rule array_set_null{z : state, ht : heaptype, i : num_, v_val : val, x : idx}: @@ -15176,11 +17602,14 @@ relation Step: `%~>%`(config, config) -- if ($proj_uN_0(!($proj_num__0(i))).0 >= |$fun_arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 - rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?}: - `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, v_val)), [])) + rule array_set_array{z : state, a : addr, i : num_, v_val : val, x : idx, zt : storagetype, mut_opt : mut?, var_1 : fieldval?, var_0 : state}: + `%~>%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)]), mk_config_config(var_0, [])) + -- fun_packfield_: `%%%`(zt, v_val, var_1) -- if ($proj_num__0(i) =/= ?()) + -- if (var_1 =/= ?()) + -- fun_with_array: `%%%%%`(z, a, $proj_uN_0(!($proj_num__0(i))).0, !(var_1), var_0) -- wf_config: `%`(mk_config_config(z, [REF_ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $instr_val(v_val) ARRAY_SET_instr(x)])) - -- wf_config: `%`(mk_config_config($with_array(z, a, $proj_uN_0(!($proj_num__0(i))).0, $packfield_(zt, v_val)), [])) + -- wf_config: `%`(mk_config_config(var_0, [])) -- wf_comptype: `%`(ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) -- Expand: `%~~%`($fun_type(z, x), ARRAY_comptype(mk_fieldtype_fieldtype(mut_opt, zt))) } @@ -15217,23 +17646,30 @@ relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(var_0 : type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{type'_lst : type*, v_type : type, deftype'_lst : deftype*, deftype_lst : deftype*, v_rectype : rectype, x : uN}(type'_lst ++ [v_type]) = deftype'_lst ++ deftype_lst +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 +relation fun_alloctypes: `%%`(type*, deftype*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_0: + `%%`([], []) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.6-7.17 + rule fun_alloctypes_case_1{type'_lst : type*, v_type : type, deftype'_lst : deftype*, deftype_lst : deftype*, v_rectype : rectype, x : uN, var_2 : deftype*, var_1 : deftype*, var_0 : deftype*}: + `%%`(type'_lst ++ [v_type], deftype'_lst ++ deftype_lst) + -- fun_rolldt: `%%%`(x, v_rectype, var_2) + -- fun_subst_all_deftypes: `%%%`(var_2, $typeuse_deftype(deftype')*{deftype' <- deftype'_lst}, var_1) + -- fun_alloctypes: `%%`(type'_lst, var_0) -- wf_uN: `%%`(32, x) - -- if (deftype'_lst = $alloctypes(type'_lst)) - -- if (v_type = TYPE_type(v_rectype)) - -- if (deftype_lst = $subst_all_deftypes($rolldt(x, v_rectype), $typeuse_deftype(deftype')*{deftype' <- deftype'_lst})) + -- where deftype'_lst = var_0 {deftype'_lst} + -- where TYPE_type(v_rectype) = v_type {v_rectype} + -- if (deftype_lst = var_1) -- if ($proj_uN_0(x).0 = |deftype'_lst|) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(v_store : store, v_tagtype : tagtype) : (store, tagaddr) +relation fun_alloctag: `%%%`(store, tagtype, (store, tagaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, v_tagtype : typeuse, v_taginst : taginst}(s, v_tagtype) = (s +++ {TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + rule fun_alloctag_case_0{s : store, v_tagtype : typeuse, v_taginst : taginst}: + `%%%`(s, v_tagtype, (s +++ {TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|)) -- wf_store: `%`({TAGS [v_taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_taginst: `%`({TYPE v_tagtype}) -- if (v_taginst = {TYPE v_tagtype}) @@ -15241,22 +17677,28 @@ def $alloctag(v_store : store, v_tagtype : tagtype) : (store, tagaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(v_store : store, var_0 : tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*, s_2 : store, ja : nat, ja'_lst : tagaddr*, s_1 : store}(s, [v_tagtype] ++ tagtype'_lst) = (s_2, [ja] ++ ja'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 +relation fun_alloctags: `%%%`(store, tagtype*, (store, tagaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.6-20.16 + rule fun_alloctags_case_1{s : store, v_tagtype : typeuse, tagtype'_lst : tagtype*, s_2 : store, ja : nat, ja'_lst : tagaddr*, s_1 : store, var_1 : (store, tagaddr*), var_0 : (store, tagaddr)}: + `%%%`(s, [v_tagtype] ++ tagtype'_lst, (s_2, [ja] ++ ja'_lst)) + -- fun_alloctags: `%%%`(s_1, tagtype'_lst, var_1) + -- fun_alloctag: `%%%`(s, v_tagtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ja) = $alloctag(s, v_tagtype)) - -- if ((s_2, ja'_lst) = $alloctags(s_1, tagtype'_lst)) + -- where (s_1, ja) = var_0 {ja, s_1} + -- where (s_2, ja'_lst) = var_1 {ja'_lst, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(v_store : store, v_globaltype : globaltype, v_val : val) : (store, globaladdr) +relation fun_allocglobal: `%%%%`(store, globaltype, val, (store, globaladdr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, v_globaltype : globaltype, v_val : val, v_globalinst : globalinst}(s, v_globaltype, v_val) = (s +++ {TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + rule fun_allocglobal_case_0{s : store, v_globaltype : globaltype, v_val : val, v_globalinst : globalinst}: + `%%%%`(s, v_globaltype, v_val, (s +++ {TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [v_globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_globalinst: `%`({TYPE v_globaltype, VALUE v_val}) -- if (v_globalinst = {TYPE v_globaltype, VALUE v_val}) @@ -15264,22 +17706,28 @@ def $allocglobal(v_store : store, v_globaltype : globaltype, v_val : val) : (sto ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(v_store : store, var_0 : globaltype*, var_1 : val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*, s_2 : store, ga : nat, ga'_lst : globaladdr*, s_1 : store}(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst) = (s_2, [ga] ++ ga'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 +relation fun_allocglobals: `%%%%`(store, globaltype*, val*, (store, globaladdr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.6-31.19 + rule fun_allocglobals_case_1{s : store, v_globaltype : globaltype, globaltype'_lst : globaltype*, v_val : val, val'_lst : val*, s_2 : store, ga : nat, ga'_lst : globaladdr*, s_1 : store, var_1 : (store, globaladdr*), var_0 : (store, globaladdr)}: + `%%%%`(s, [v_globaltype] ++ globaltype'_lst, [v_val] ++ val'_lst, (s_2, [ga] ++ ga'_lst)) + -- fun_allocglobals: `%%%%`(s_1, globaltype'_lst, val'_lst, var_1) + -- fun_allocglobal: `%%%%`(s, v_globaltype, v_val, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ga) = $allocglobal(s, v_globaltype, v_val)) - -- if ((s_2, ga'_lst) = $allocglobals(s_1, globaltype'_lst, val'_lst)) + -- where (s_1, ga) = var_0 {ga, s_1} + -- where (s_2, ga'_lst) = var_1 {ga'_lst, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(v_store : store, v_memtype : memtype) : (store, memaddr) +relation fun_allocmem: `%%%`(store, memtype, (store, memaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}(s, `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt))) = (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + rule fun_allocmem_case_0{s : store, at : addrtype, i : uN, j_opt : u64?, v_meminst : meminst}: + `%%%`(s, `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), (s +++ {TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [v_meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_meminst: `%`({TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) -- if (v_meminst = {TYPE `%%PAGE`_memtype(at, mk_limits_limits(i, j_opt)), BYTES mk_byte_byte(0)^($proj_uN_0(i).0 * (64 * $Ki)){}}) @@ -15287,22 +17735,28 @@ def $allocmem(v_store : store, v_memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(v_store : store, var_0 : memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 - def $allocmems{s : store, v_memtype : memtype, memtype'_lst : memtype*, s_2 : store, ma : nat, ma'_lst : memaddr*, s_1 : store}(s, [v_memtype] ++ memtype'_lst) = (s_2, [ma] ++ ma'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 +relation fun_allocmems: `%%%`(store, memtype*, (store, memaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_0{s : store}: + `%%%`(s, [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.6-42.16 + rule fun_allocmems_case_1{s : store, v_memtype : memtype, memtype'_lst : memtype*, s_2 : store, ma : nat, ma'_lst : memaddr*, s_1 : store, var_1 : (store, memaddr*), var_0 : (store, memaddr)}: + `%%%`(s, [v_memtype] ++ memtype'_lst, (s_2, [ma] ++ ma'_lst)) + -- fun_allocmems: `%%%`(s_1, memtype'_lst, var_1) + -- fun_allocmem: `%%%`(s, v_memtype, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ma) = $allocmem(s, v_memtype)) - -- if ((s_2, ma'_lst) = $allocmems(s_1, memtype'_lst)) + -- where (s_1, ma) = var_0 {ma, s_1} + -- where (s_2, ma'_lst) = var_1 {ma'_lst, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(v_store : store, v_tabletype : tabletype, v_ref : ref) : (store, tableaddr) +relation fun_alloctable: `%%%%`(store, tabletype, ref, (store, tableaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}(s, mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), v_ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + rule fun_alloctable_case_0{s : store, at : addrtype, i : uN, j_opt : u64?, rt : reftype, v_ref : ref, v_tableinst : tableinst}: + `%%%%`(s, mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), v_ref, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [v_tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_tableinst: `%`({TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) -- if (v_tableinst = {TYPE mk_tabletype_tabletype(at, mk_limits_limits(i, j_opt), rt), REFS v_ref^$proj_uN_0(i).0{}}) @@ -15310,22 +17764,28 @@ def $alloctable(v_store : store, v_tabletype : tabletype, v_ref : ref) : (store, ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(v_store : store, var_0 : tabletype*, var_1 : ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*, s_2 : store, ta : nat, ta'_lst : tableaddr*, s_1 : store}(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst) = (s_2, [ta] ++ ta'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 +relation fun_alloctables: `%%%%`(store, tabletype*, ref*, (store, tableaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.6-53.18 + rule fun_alloctables_case_1{s : store, v_tabletype : tabletype, tabletype'_lst : tabletype*, v_ref : ref, ref'_lst : ref*, s_2 : store, ta : nat, ta'_lst : tableaddr*, s_1 : store, var_1 : (store, tableaddr*), var_0 : (store, tableaddr)}: + `%%%%`(s, [v_tabletype] ++ tabletype'_lst, [v_ref] ++ ref'_lst, (s_2, [ta] ++ ta'_lst)) + -- fun_alloctables: `%%%%`(s_1, tabletype'_lst, ref'_lst, var_1) + -- fun_alloctable: `%%%%`(s, v_tabletype, v_ref, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ta) = $alloctable(s, v_tabletype, v_ref)) - -- if ((s_2, ta'_lst) = $alloctables(s_1, tabletype'_lst, ref'_lst)) + -- where (s_1, ta) = var_0 {s_1, ta} + -- where (s_2, ta'_lst) = var_1 {s_2, ta'_lst} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(v_store : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst) : (store, funcaddr) +relation fun_allocfunc: `%%%%%`(store, deftype, funccode, moduleinst, (store, funcaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, v_funcinst : funcinst}(s, v_deftype, v_funccode, v_moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + rule fun_allocfunc_case_0{s : store, v_deftype : deftype, v_funccode : funccode, v_moduleinst : moduleinst, v_funcinst : funcinst}: + `%%%%%`(s, v_deftype, v_funccode, v_moduleinst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [v_funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_funcinst: `%`({TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) -- if (v_funcinst = {TYPE v_deftype, MODULE v_moduleinst, CODE v_funccode}) @@ -15333,22 +17793,28 @@ def $allocfunc(v_store : store, v_deftype : deftype, v_funccode : funccode, v_mo ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(v_store : store, var_0 : deftype*, var_1 : funccode*, var_2 : moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*, s_2 : store, fa : nat, fa'_lst : funcaddr*, s_1 : store}(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst) = (s_2, [fa] ++ fa'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 +relation fun_allocfuncs: `%%%%%`(store, deftype*, funccode*, moduleinst*, (store, funcaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_0{s : store}: + `%%%%%`(s, [], [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.6-64.17 + rule fun_allocfuncs_case_1{s : store, dt : deftype, dt'_lst : deftype*, v_funccode : funccode, funccode'_lst : funccode*, v_moduleinst : moduleinst, moduleinst'_lst : moduleinst*, s_2 : store, fa : nat, fa'_lst : funcaddr*, s_1 : store, var_1 : (store, funcaddr*), var_0 : (store, funcaddr)}: + `%%%%%`(s, [dt] ++ dt'_lst, [v_funccode] ++ funccode'_lst, [v_moduleinst] ++ moduleinst'_lst, (s_2, [fa] ++ fa'_lst)) + -- fun_allocfuncs: `%%%%%`(s_1, dt'_lst, funccode'_lst, moduleinst'_lst, var_1) + -- fun_allocfunc: `%%%%%`(s, dt, v_funccode, v_moduleinst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, fa) = $allocfunc(s, dt, v_funccode, v_moduleinst)) - -- if ((s_2, fa'_lst) = $allocfuncs(s_1, dt'_lst, funccode'_lst, moduleinst'_lst)) + -- where (s_1, fa) = var_0 {fa, s_1} + -- where (s_2, fa'_lst) = var_1 {fa'_lst, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(v_store : store, v_datatype : datatype, var_0 : byte*) : (store, dataaddr) +relation fun_allocdata: `%%%%`(store, datatype, byte*, (store, dataaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, byte_lst : byte*, v_datainst : datainst}(s, OK_datatype, byte_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + rule fun_allocdata_case_0{s : store, byte_lst : byte*, v_datainst : datainst}: + `%%%%`(s, OK_datatype, byte_lst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [v_datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}) -- wf_datainst: `%`({BYTES byte_lst}) -- if (v_datainst = {BYTES byte_lst}) @@ -15356,22 +17822,28 @@ def $allocdata(v_store : store, v_datatype : datatype, var_0 : byte*) : (store, ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(v_store : store, var_0 : datatype*, var_1 : byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**, s_2 : store, da : nat, da'_lst : dataaddr*, s_1 : store}(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst) = (s_2, [da] ++ da'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 +relation fun_allocdatas: `%%%%`(store, datatype*, byte**, (store, dataaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.6-75.17 + rule fun_allocdatas_case_1{s : store, ok : datatype, ok'_lst : datatype*, b_lst : byte*, b'_lst_lst : byte**, s_2 : store, da : nat, da'_lst : dataaddr*, s_1 : store, var_1 : (store, dataaddr*), var_0 : (store, dataaddr)}: + `%%%%`(s, [ok] ++ ok'_lst, [b_lst] ++ b'_lst_lst, (s_2, [da] ++ da'_lst)) + -- fun_allocdatas: `%%%%`(s_1, ok'_lst, b'_lst_lst, var_1) + -- fun_allocdata: `%%%%`(s, ok, b_lst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, da) = $allocdata(s, ok, b_lst)) - -- if ((s_2, da'_lst) = $allocdatas(s_1, ok'_lst, b'_lst_lst)) + -- where (s_1, da) = var_0 {da, s_1} + -- where (s_2, da'_lst) = var_1 {da'_lst, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(v_store : store, v_elemtype : elemtype, var_0 : ref*) : (store, elemaddr) +relation fun_allocelem: `%%%%`(store, elemtype, ref*, (store, elemaddr)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, v_elemtype : reftype, ref_lst : ref*, v_eleminst : eleminst}(s, v_elemtype, ref_lst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + rule fun_allocelem_case_0{s : store, v_elemtype : reftype, ref_lst : ref*, v_eleminst : eleminst}: + `%%%%`(s, v_elemtype, ref_lst, (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|)) -- wf_store: `%`({TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [v_eleminst], STRUCTS [], ARRAYS [], EXNS []}) -- wf_eleminst: `%`({TYPE v_elemtype, REFS ref_lst}) -- if (v_eleminst = {TYPE v_elemtype, REFS ref_lst}) @@ -15379,45 +17851,93 @@ def $allocelem(v_store : store, v_elemtype : elemtype, var_0 : ref*) : (store, e ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(v_store : store, var_0 : elemtype*, var_1 : ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**, s_2 : store, ea : nat, ea'_lst : elemaddr*, s_1 : store}(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst) = (s_2, [ea] ++ ea'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 +relation fun_allocelems: `%%%%`(store, elemtype*, ref**, (store, elemaddr*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_0{s : store}: + `%%%%`(s, [], [], (s, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.6-86.17 + rule fun_allocelems_case_1{s : store, rt : reftype, rt'_lst : reftype*, ref_lst : ref*, ref'_lst_lst : ref**, s_2 : store, ea : nat, ea'_lst : elemaddr*, s_1 : store, var_1 : (store, elemaddr*), var_0 : (store, elemaddr)}: + `%%%%`(s, [rt] ++ rt'_lst, [ref_lst] ++ ref'_lst_lst, (s_2, [ea] ++ ea'_lst)) + -- fun_allocelems: `%%%%`(s_1, rt'_lst, ref'_lst_lst, var_1) + -- fun_allocelem: `%%%%`(s, rt, ref_lst, var_0) -- wf_store: `%`(s_2) -- wf_store: `%`(s_1) - -- if ((s_1, ea) = $allocelem(s, rt, ref_lst)) - -- if ((s_2, ea'_lst) = $allocelems(s_1, rt'_lst, ref'_lst_lst)) + -- where (s_1, ea) = var_0 {ea, s_1} + -- where (s_2, ea'_lst) = var_1 {ea'_lst, s_2} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(v_moduleinst : moduleinst, v_export : export) : exportinst +relation fun_allocexport: `%%%`(moduleinst, export, exportinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x))) = {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_0{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, TAG_externidx(x)), {NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.TAGS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR TAG_externaddr(v_moduleinst.TAGS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x))) = {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_1{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, GLOBAL_externidx(x)), {NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.GLOBALS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR GLOBAL_externaddr(v_moduleinst.GLOBALS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x))) = {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_2{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, MEM_externidx(x)), {NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.MEMS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR MEM_externaddr(v_moduleinst.MEMS_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x))) = {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_3{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, TABLE_externidx(x)), {NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.TABLES_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR TABLE_externaddr(v_moduleinst.TABLES_moduleinst[$proj_uN_0(x).0])}) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{v_moduleinst : moduleinst, v_name : name, x : uN}(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x))) = {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])} + rule fun_allocexport_case_4{v_moduleinst : moduleinst, v_name : name, x : uN}: + `%%%`(v_moduleinst, EXPORT_export(v_name, FUNC_externidx(x)), {NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) + -- if ($proj_uN_0(x).0 < |v_moduleinst.FUNCS_moduleinst|) -- wf_exportinst: `%`({NAME v_name, ADDR FUNC_externaddr(v_moduleinst.FUNCS_moduleinst[$proj_uN_0(x).0])}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(v_moduleinst : moduleinst, var_0 : export*) : exportinst* +relation fun_allocexports: `%%%`(moduleinst, export*, exportinst*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{v_moduleinst : moduleinst, export_lst : export*}(v_moduleinst, export_lst) = $allocexport(v_moduleinst, v_export)*{v_export <- export_lst} + rule fun_allocexports_case_0{v_moduleinst : moduleinst, export_lst : export*, var_0_lst : exportinst*}: + `%%%`(v_moduleinst, export_lst, var_0_lst) + -- if (|var_0_lst| = |export_lst|) + -- (fun_allocexport: `%%%`(v_moduleinst, v_export, var_0))*{var_0 <- var_0_lst, v_export <- export_lst} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(v_store : store, v_module : module, var_0 : externaddr*, var_1 : val*, var_2 : ref*, var_3 : ref**) : (store, moduleinst) +relation fun_allocmodule: `%%%%%%%`(store, module, externaddr*, val*, ref*, ref**, (store, moduleinst)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, globaltype_lst : globaltype*, expr_G_lst : expr*, memtype_lst : memtype*, tabletype_lst : tabletype*, expr_T_lst : expr*, x_lst : idx*, local_lst_lst : local**, expr_F_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, i_F_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*}(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst) = (s_7, v_moduleinst) + rule fun_allocmodule_case_0{s : store, v_module : module, externaddr_lst : externaddr*, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, s_7 : store, v_moduleinst : moduleinst, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, tagtype_lst : tagtype*, globaltype_lst : globaltype*, expr_G_lst : expr*, memtype_lst : memtype*, tabletype_lst : tabletype*, expr_T_lst : expr*, x_lst : idx*, local_lst_lst : local**, expr_F_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, elemtype_lst : elemtype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, aa_I_lst : tagaddr*, ga_I_lst : globaladdr*, ma_I_lst : memaddr*, ta_I_lst : tableaddr*, fa_I_lst : funcaddr*, dt_lst : deftype*, fa_lst : nat*, i_F_lst : nat*, s_1 : store, aa_lst : tagaddr*, s_2 : store, ga_lst : globaladdr*, s_3 : store, ma_lst : memaddr*, s_4 : store, ta_lst : tableaddr*, s_5 : store, da_lst : dataaddr*, s_6 : store, ea_lst : elemaddr*, xi_lst : exportinst*, var_18 : exportinst*, var_17 : (store, funcaddr*), var_16_lst : elemtype*, var_15 : (store, elemaddr*), var_14 : (store, dataaddr*), var_13_lst : tabletype*, var_12 : (store, tableaddr*), var_11_lst : memtype*, var_10 : (store, memaddr*), var_9_lst : globaltype*, var_8 : (store, globaladdr*), var_7_lst : tagtype*, var_6 : (store, tagaddr*), var_5 : deftype*, var_4 : funcaddr*, var_3 : tableaddr*, var_2 : memaddr*, var_1 : globaladdr*, var_0 : tagaddr*}: + `%%%%%%%`(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, (s_7, v_moduleinst)) + -- fun_allocexports: `%%%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst, var_18) + -- (if ($proj_uN_0(x).0 < |dt_lst|))*{x <- x_lst} + -- fun_allocfuncs: `%%%%%`(s_6, dt_lst[$proj_uN_0(x).0]*{x <- x_lst}, FUNC_funccode(x, local_lst, expr_F)*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst}, v_moduleinst^|func_lst|{}, var_17) + -- if (|var_16_lst| = |elemtype_lst|) + -- (fun_subst_all_reftype: `%%%`(v_elemtype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_16))*{var_16 <- var_16_lst, v_elemtype <- elemtype_lst} + -- fun_allocelems: `%%%%`(s_5, var_16_lst, ref_E_lst_lst, var_15) + -- fun_allocdatas: `%%%%`(s_4, OK_datatype^|data_lst|{}, byte_lst_lst, var_14) + -- if (|var_13_lst| = |tabletype_lst|) + -- (fun_subst_all_tabletype: `%%%`(v_tabletype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_13))*{var_13 <- var_13_lst, v_tabletype <- tabletype_lst} + -- fun_alloctables: `%%%%`(s_3, var_13_lst, ref_T_lst, var_12) + -- if (|var_11_lst| = |memtype_lst|) + -- (fun_subst_all_memtype: `%%%`(v_memtype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_11))*{var_11 <- var_11_lst, v_memtype <- memtype_lst} + -- fun_allocmems: `%%%`(s_2, var_11_lst, var_10) + -- if (|var_9_lst| = |globaltype_lst|) + -- (fun_subst_all_globaltype: `%%%`(v_globaltype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_9))*{var_9 <- var_9_lst, v_globaltype <- globaltype_lst} + -- fun_allocglobals: `%%%%`(s_1, var_9_lst, val_G_lst, var_8) + -- if (|var_7_lst| = |tagtype_lst|) + -- (fun_subst_all_tagtype: `%%%`(v_tagtype, $typeuse_deftype(dt)*{dt <- dt_lst}, var_7))*{var_7 <- var_7_lst, v_tagtype <- tagtype_lst} + -- fun_alloctags: `%%%`(s, var_7_lst, var_6) + -- fun_alloctypes: `%%`(type_lst, var_5) + -- fun_funcsxa: `%%`(externaddr_lst, var_4) + -- fun_tablesxa: `%%`(externaddr_lst, var_3) + -- fun_memsxa: `%%`(externaddr_lst, var_2) + -- fun_globalsxa: `%%`(externaddr_lst, var_1) + -- fun_tagsxa: `%%`(externaddr_lst, var_0) -- wf_store: `%`(s_7) -- wf_moduleinst: `%`(v_moduleinst) -- wf_store: `%`(s_1) @@ -15428,59 +17948,74 @@ def $allocmodule(v_store : store, v_module : module, var_0 : externaddr*, var_1 -- wf_store: `%`(s_6) -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) -- (wf_tag: `%`(TAG_tag(v_tagtype)))*{v_tagtype <- tagtype_lst} + -- if (|expr_G_lst| = |globaltype_lst|) -- (wf_global: `%`(GLOBAL_global(v_globaltype, expr_G)))*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} -- (wf_mem: `%`(MEMORY_mem(v_memtype)))*{v_memtype <- memtype_lst} + -- if (|expr_T_lst| = |tabletype_lst|) -- (wf_table: `%`(TABLE_table(v_tabletype, expr_T)))*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} + -- if (|expr_F_lst| = |local_lst_lst|) + -- if (|expr_F_lst| = |x_lst|) -- (wf_func: `%`(FUNC_func(x, local_lst, expr_F)))*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst} + -- if (|byte_lst_lst| = |datamode_lst|) -- (wf_data: `%`(DATA_data(byte_lst, v_datamode)))*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} + -- if (|elemmode_lst| = |elemtype_lst|) + -- if (|elemmode_lst| = |expr_E_lst_lst|) -- (wf_elem: `%`(ELEM_elem(v_elemtype, expr_E_lst, v_elemmode)))*{v_elemmode <- elemmode_lst, v_elemtype <- elemtype_lst, expr_E_lst <- expr_E_lst_lst} -- wf_moduleinst: `%`({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}) -- wf_moduleinst: `%`({TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) - -- if (v_module = MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) - -- if (tag_lst = TAG_tag(v_tagtype)*{v_tagtype <- tagtype_lst}) - -- if (global_lst = GLOBAL_global(v_globaltype, expr_G)*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst}) - -- if (mem_lst = MEMORY_mem(v_memtype)*{v_memtype <- memtype_lst}) - -- if (table_lst = TABLE_table(v_tabletype, expr_T)*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst}) - -- if (func_lst = FUNC_func(x, local_lst, expr_F)*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst}) - -- if (data_lst = DATA_data(byte_lst, v_datamode)*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst}) - -- if (elem_lst = ELEM_elem(v_elemtype, expr_E_lst, v_elemmode)*{v_elemmode <- elemmode_lst, v_elemtype <- elemtype_lst, expr_E_lst <- expr_E_lst_lst}) - -- if (aa_I_lst = $tagsxa(externaddr_lst)) - -- if (ga_I_lst = $globalsxa(externaddr_lst)) - -- if (ma_I_lst = $memsxa(externaddr_lst)) - -- if (ta_I_lst = $tablesxa(externaddr_lst)) - -- if (fa_I_lst = $funcsxa(externaddr_lst)) - -- if (dt_lst = $alloctypes(type_lst)) + -- where MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst) = v_module {data_lst, elem_lst, export_lst, func_lst, global_lst, import_lst, mem_lst, start_opt, table_lst, tag_lst, type_lst} + -- where TAG_tag(v_tagtype)*{v_tagtype <- tagtype_lst} = tag_lst {tagtype_lst, v_tagtype} + -- where GLOBAL_global(v_globaltype, expr_G)*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} = global_lst {expr_G, expr_G_lst, globaltype_lst, v_globaltype} + -- where MEMORY_mem(v_memtype)*{v_memtype <- memtype_lst} = mem_lst {memtype_lst, v_memtype} + -- where TABLE_table(v_tabletype, expr_T)*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} = table_lst {expr_T, expr_T_lst, tabletype_lst, v_tabletype} + -- where FUNC_func(x, local_lst, expr_F)*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst} = func_lst {expr_F, expr_F_lst, local_lst, local_lst_lst, x, x_lst} + -- where DATA_data(byte_lst, v_datamode)*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} = data_lst {byte_lst, byte_lst_lst, datamode_lst, v_datamode} + -- where ELEM_elem(v_elemtype, expr_E_lst, v_elemmode)*{v_elemmode <- elemmode_lst, v_elemtype <- elemtype_lst, expr_E_lst <- expr_E_lst_lst} = elem_lst {elemmode_lst, elemtype_lst, expr_E_lst, expr_E_lst_lst, v_elemmode, v_elemtype} + -- where aa_I_lst = var_0 {aa_I_lst} + -- where ga_I_lst = var_1 {ga_I_lst} + -- where ma_I_lst = var_2 {ma_I_lst} + -- where ta_I_lst = var_3 {ta_I_lst} + -- where fa_I_lst = var_4 {fa_I_lst} + -- where dt_lst = var_5 {dt_lst} -- if (fa_lst = (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}) - -- if ((s_1, aa_lst) = $alloctags(s, $subst_all_tagtype(v_tagtype, $typeuse_deftype(dt)*{dt <- dt_lst})*{v_tagtype <- tagtype_lst})) - -- if ((s_2, ga_lst) = $allocglobals(s_1, $subst_all_globaltype(v_globaltype, $typeuse_deftype(dt)*{dt <- dt_lst})*{v_globaltype <- globaltype_lst}, val_G_lst)) - -- if ((s_3, ma_lst) = $allocmems(s_2, $subst_all_memtype(v_memtype, $typeuse_deftype(dt)*{dt <- dt_lst})*{v_memtype <- memtype_lst})) - -- if ((s_4, ta_lst) = $alloctables(s_3, $subst_all_tabletype(v_tabletype, $typeuse_deftype(dt)*{dt <- dt_lst})*{v_tabletype <- tabletype_lst}, ref_T_lst)) - -- if ((s_5, da_lst) = $allocdatas(s_4, OK_datatype^|data_lst|{}, byte_lst_lst)) - -- if ((s_6, ea_lst) = $allocelems(s_5, $subst_all_reftype(v_elemtype, $typeuse_deftype(dt)*{dt <- dt_lst})*{v_elemtype <- elemtype_lst}, ref_E_lst_lst)) - -- if ((s_7, fa_lst) = $allocfuncs(s_6, dt_lst[$proj_uN_0(x).0]*{x <- x_lst}, FUNC_funccode(x, local_lst, expr_F)*{expr_F <- expr_F_lst, local_lst <- local_lst_lst, x <- x_lst}, v_moduleinst^|func_lst|{})) - -- if (xi_lst = $allocexports({TYPES [], TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS [], ELEMS [], EXPORTS []}, export_lst)) + -- where (s_1, aa_lst) = var_6 {aa_lst, s_1} + -- where (s_2, ga_lst) = var_8 {ga_lst, s_2} + -- where (s_3, ma_lst) = var_10 {ma_lst, s_3} + -- where (s_4, ta_lst) = var_12 {s_4, ta_lst} + -- where (s_5, da_lst) = var_14 {da_lst, s_5} + -- where (s_6, ea_lst) = var_15 {ea_lst, s_6} + -- if ((s_7, fa_lst) = var_17) + -- if (xi_lst = var_18) -- if (v_moduleinst = {TYPES dt_lst, TAGS aa_I_lst ++ aa_lst, GLOBALS ga_I_lst ++ ga_lst, MEMS ma_I_lst ++ ma_lst, TABLES ta_I_lst ++ ta_lst, FUNCS fa_I_lst ++ fa_lst, DATAS da_lst, ELEMS ea_lst, EXPORTS xi_lst}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(v_dataidx : dataidx, v_data : data) : instr* +relation fun_rundata_: `%%%`(dataidx, data, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, b_lst : byte*, v_n : nat}(x, DATA_data(b_lst, PASSIVE_datamode)) = [] + rule fun_rundata__case_0{x : uN, b_lst : byte*, v_n : nat}: + `%%%`(x, DATA_data(b_lst, PASSIVE_datamode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : uN, b_lst : byte*, v_n : nat, y : uN, instr_lst : instr*}(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(y, x) DATA_DROP_instr(x)] + rule fun_rundata__case_1{x : uN, b_lst : byte*, v_n : nat, y : uN, instr_lst : instr*}: + `%%%`(x, DATA_data(b_lst, ACTIVE_datamode(y, instr_lst)), instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) MEMORY_INIT_instr(y, x) DATA_DROP_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) -- wf_instr: `%`(MEMORY_INIT_instr(y, x)) -- wf_instr: `%`(DATA_DROP_instr(x)) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* +relation fun_runelem_: `%%%`(elemidx, elem, instr*) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat}(x, ELEM_elem(rt, e_lst, PASSIVE_elemmode)) = [] + rule fun_runelem__case_0{x : uN, rt : reftype, e_lst : expr*, v_n : nat}: + `%%%`(x, ELEM_elem(rt, e_lst, PASSIVE_elemmode), []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat}(x, ELEM_elem(rt, e_lst, DECLARE_elemmode)) = [ELEM_DROP_instr(x)] + rule fun_runelem__case_1{x : uN, rt : reftype, e_lst : expr*, v_n : nat}: + `%%%`(x, ELEM_elem(rt, e_lst, DECLARE_elemmode), [ELEM_DROP_instr(x)]) -- wf_instr: `%`(ELEM_DROP_instr(x)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : uN, rt : reftype, e_lst : expr*, v_n : nat, y : uN, instr_lst : instr*}(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst))) = instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(y, x) ELEM_DROP_instr(x)] + rule fun_runelem__case_2{x : uN, rt : reftype, e_lst : expr*, v_n : nat, y : uN, instr_lst : instr*}: + `%%%`(x, ELEM_elem(rt, e_lst, ACTIVE_elemmode(y, instr_lst)), instr_lst ++ [CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0))) CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n))) TABLE_INIT_instr(y, x) ELEM_DROP_instr(x)]) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(0)))) -- wf_instr: `%`(CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, mk_uN_uN(v_n)))) -- wf_instr: `%`(TABLE_INIT_instr(y, x)) @@ -15489,27 +18024,42 @@ def $runelem_(v_elemidx : elemidx, v_elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 -def $evalglobals(v_state : state, var_0 : globaltype*, var_1 : expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 - def $evalglobals{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, z' : state, v_val : val, val'_lst : val*, s : store, f : frame, s' : store, a : nat}(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst) = (z', [v_val] ++ val'_lst) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 +relation fun_evalglobals: `%%%%`(state, globaltype*, expr*, (state, val*)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_0{z : state}: + `%%%%`(z, [], [], (z, [])) + + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.6-160.18 + rule fun_evalglobals_case_1{z : state, gt : globaltype, gt'_lst : globaltype*, v_expr : instr*, expr'_lst : expr*, z' : state, v_val : val, val'_lst : val*, s : store, f : frame, s' : store, a : nat, var_1 : (state, val*), var_0 : (store, globaladdr)}: + `%%%%`(z, [gt] ++ gt'_lst, [v_expr] ++ expr'_lst, (z', [v_val] ++ val'_lst)) + -- fun_evalglobals: `%%%%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst, var_1) + -- fun_allocglobal: `%%%%`(s, gt, v_val, var_0) -- wf_state: `%`(z') -- wf_val: `%`(v_val) -- (wf_val: `%`(val'))*{val' <- val'_lst} -- wf_state: `%`(mk_state_state(s, f)) -- wf_state: `%`(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]])) -- Eval_expr: `%;%~>*%;%`(z, v_expr, z, [v_val]) - -- if (z = mk_state_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, v_val)) - -- if ((z', val'_lst) = $evalglobals(mk_state_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'_lst, expr'_lst)) + -- where mk_state_state(s, f) = z {f, s} + -- where (s', a) = var_0 {a, s'} + -- where (z', val'_lst) = var_1 {val'_lst, z'} } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : config +relation fun_instantiate: `%%%%`(store, module, externaddr*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, v_module : module, externaddr_lst : externaddr*, s' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, globaltype_lst : globaltype*, expr_G_lst : expr*, tabletype_lst : tabletype*, expr_T_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, reftype_lst : reftype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, x_opt : idx?, moduleinst_0 : moduleinst, i_F_lst : nat*, z : state, z' : state, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, i_D_lst : nat*, i_E_lst : nat*}(s, v_module, externaddr_lst) = mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt)) + rule fun_instantiate_case_0{s : store, v_module : module, externaddr_lst : externaddr*, s' : store, v_moduleinst : moduleinst, instr_E_lst : instr*, instr_D_lst : instr*, instr_S_opt : instr?, xt_I_lst : externtype*, xt_E_lst : externtype*, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*, globaltype_lst : globaltype*, expr_G_lst : expr*, tabletype_lst : tabletype*, expr_T_lst : expr*, byte_lst_lst : byte**, datamode_lst : datamode*, reftype_lst : reftype*, expr_E_lst_lst : expr**, elemmode_lst : elemmode*, x_opt : idx?, moduleinst_0 : moduleinst, i_F_lst : nat*, z : state, z' : state, val_G_lst : val*, ref_T_lst : ref*, ref_E_lst_lst : ref**, i_D_lst : nat*, i_E_lst : nat*, var_6_lst : instr**, var_5_lst : instr**, var_4 : (store, moduleinst), var_3 : (state, val*), var_2 : funcaddr*, var_1 : globaladdr*, var_0 : deftype*}: + `%%%%`(s, v_module, externaddr_lst, mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) + -- (if (i_E < |elem_lst|))^(i_E<|elem_lst|){i_E <- i_E_lst} + -- (fun_runelem_: `%%%`(mk_uN_elemidx(i_E), elem_lst[i_E], var_6))^(i_E<|elem_lst|){var_6 <- var_6_lst, i_E <- i_E_lst} + -- (if (i_D < |data_lst|))^(i_D<|data_lst|){i_D <- i_D_lst} + -- (fun_rundata_: `%%%`(mk_uN_dataidx(i_D), data_lst[i_D], var_5))^(i_D<|data_lst|){var_5 <- var_5_lst, i_D <- i_D_lst} + -- fun_allocmodule: `%%%%%%%`(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst, var_4) + -- fun_evalglobals: `%%%%`(z, globaltype_lst, expr_G_lst, var_3) + -- fun_funcsxa: `%%`(externaddr_lst, var_2) + -- fun_globalsxa: `%%`(externaddr_lst, var_1) + -- fun_alloctypes: `%%`(type_lst, var_0) -- wf_state: `%`(z) -- wf_state: `%`(z') -- (wf_val: `%`(val_G))*{val_G <- val_G_lst} @@ -15518,4233 +18068,52 @@ def $instantiate(v_store : store, v_module : module, var_0 : externaddr*) : conf -- wf_config: `%`(mk_config_config(mk_state_state(s', {LOCALS [], MODULE v_moduleinst}), instr_E_lst ++ instr_D_lst ++ lift(instr_S_opt))) -- wf_moduletype: `%`(mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) -- wf_module: `%`(MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) + -- if (|expr_G_lst| = |globaltype_lst|) -- (wf_global: `%`(GLOBAL_global(v_globaltype, expr_G)))*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} + -- if (|expr_T_lst| = |tabletype_lst|) -- (wf_table: `%`(TABLE_table(v_tabletype, expr_T)))*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} + -- if (|byte_lst_lst| = |datamode_lst|) -- (wf_data: `%`(DATA_data(byte_lst, v_datamode)))*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} + -- if (|elemmode_lst| = |expr_E_lst_lst|) + -- if (|elemmode_lst| = |reftype_lst|) -- (wf_elem: `%`(ELEM_elem(v_reftype, expr_E_lst, v_elemmode)))*{v_elemmode <- elemmode_lst, expr_E_lst <- expr_E_lst_lst, v_reftype <- reftype_lst} -- (wf_start: `%`(START_start(x)))?{x <- x_opt} - -- wf_moduleinst: `%`({TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}, DATAS [], ELEMS [], EXPORTS []}) + -- wf_moduleinst: `%`({TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}, DATAS [], ELEMS [], EXPORTS []}) -- wf_state: `%`(mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) -- (wf_uN: `%%`(32, mk_uN_uN(i_D)))^(i_D<|data_lst|){i_D <- i_D_lst} -- (wf_uN: `%%`(32, mk_uN_uN(i_E)))^(i_E<|elem_lst|){i_E <- i_E_lst} -- (wf_instr: `%`(CALL_instr(x)))?{x <- x_opt} -- Module_ok: `|-%:%`(v_module, mk_moduletype_moduletype(xt_I_lst, xt_E_lst)) + -- if (|externaddr_lst| = |xt_I_lst|) -- (Externaddr_ok: `%|-%:%`(s, v_externaddr, xt_I))*{v_externaddr <- externaddr_lst, xt_I <- xt_I_lst} - -- if (v_module = MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst)) - -- if (global_lst = GLOBAL_global(v_globaltype, expr_G)*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst}) - -- if (table_lst = TABLE_table(v_tabletype, expr_T)*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst}) - -- if (data_lst = DATA_data(byte_lst, v_datamode)*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst}) - -- if (elem_lst = ELEM_elem(v_reftype, expr_E_lst, v_elemmode)*{v_elemmode <- elemmode_lst, expr_E_lst <- expr_E_lst_lst, v_reftype <- reftype_lst}) - -- if (start_opt = START_start(x)?{x <- x_opt}) - -- if (moduleinst_0 = {TYPES $alloctypes(type_lst), TAGS [], GLOBALS $globalsxa(externaddr_lst), MEMS [], TABLES [], FUNCS $funcsxa(externaddr_lst) ++ (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}, DATAS [], ELEMS [], EXPORTS []}) + -- where MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst) = v_module {data_lst, elem_lst, export_lst, func_lst, global_lst, import_lst, mem_lst, start_opt, table_lst, tag_lst, type_lst} + -- where GLOBAL_global(v_globaltype, expr_G)*{expr_G <- expr_G_lst, v_globaltype <- globaltype_lst} = global_lst {expr_G, expr_G_lst, globaltype_lst, v_globaltype} + -- where TABLE_table(v_tabletype, expr_T)*{expr_T <- expr_T_lst, v_tabletype <- tabletype_lst} = table_lst {expr_T, expr_T_lst, tabletype_lst, v_tabletype} + -- where DATA_data(byte_lst, v_datamode)*{byte_lst <- byte_lst_lst, v_datamode <- datamode_lst} = data_lst {byte_lst, byte_lst_lst, datamode_lst, v_datamode} + -- where ELEM_elem(v_reftype, expr_E_lst, v_elemmode)*{v_elemmode <- elemmode_lst, expr_E_lst <- expr_E_lst_lst, v_reftype <- reftype_lst} = elem_lst {elemmode_lst, expr_E_lst, expr_E_lst_lst, reftype_lst, v_elemmode, v_reftype} + -- where START_start(x)?{x <- x_opt} = start_opt {x, x_opt} + -- if (moduleinst_0 = {TYPES var_0, TAGS [], GLOBALS var_1, MEMS [], TABLES [], FUNCS var_2 ++ (|s.FUNCS_store| + i_F)^(i_F<|func_lst|){i_F <- i_F_lst}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = mk_state_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G_lst) = $evalglobals(z, globaltype_lst, expr_G_lst)) + -- where (z', val_G_lst) = var_3 {val_G_lst, z'} + -- if (|expr_T_lst| = |ref_T_lst|) -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [$val_ref(ref_T)]))*{expr_T <- expr_T_lst, ref_T <- ref_T_lst} + -- if (|expr_E_lst_lst| = |ref_E_lst_lst|) + -- (if (|expr_E_lst| = |ref_E_lst|))*{expr_E_lst <- expr_E_lst_lst, ref_E_lst <- ref_E_lst_lst} -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [$val_ref(ref_E)]))*{expr_E <- expr_E_lst, ref_E <- ref_E_lst}*{expr_E_lst <- expr_E_lst_lst, ref_E_lst <- ref_E_lst_lst} - -- if ((s', v_moduleinst) = $allocmodule(s, v_module, externaddr_lst, val_G_lst, ref_T_lst, ref_E_lst_lst)) - -- if (instr_D_lst = $concat_(syntax instr, $rundata_(mk_uN_dataidx(i_D), data_lst[i_D])^(i_D<|data_lst|){i_D <- i_D_lst})) - -- if (instr_E_lst = $concat_(syntax instr, $runelem_(mk_uN_elemidx(i_E), elem_lst[i_E])^(i_E<|elem_lst|){i_E <- i_E_lst})) - -- if (instr_S_opt = CALL_instr(x)?{x <- x_opt}) + -- where (s', v_moduleinst) = var_4 {s', v_moduleinst} + -- if (instr_D_lst = $concat_(syntax instr, var_5_lst)) + -- if (instr_E_lst = $concat_(syntax instr, var_6_lst)) + -- where instr_S_opt = CALL_instr(x)?{x <- x_opt} {instr_S_opt} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(v_store : store, v_funcaddr : funcaddr, var_0 : val*) : config +relation fun_invoke: `%%%%`(store, funcaddr, val*, config) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}(s, v_funcaddr, val_lst) = mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))]) + rule fun_invoke_case_0{s : store, v_funcaddr : nat, val_lst : val*, t_1_lst : valtype*, t_2_lst : valtype*}: + `%%%%`(s, v_funcaddr, val_lst, mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) + -- if (v_funcaddr < |s.FUNCS_store|) -- wf_config: `%`(mk_config_config(mk_state_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), $instr_val(v_val)*{v_val <- val_lst} ++ [REF_FUNC_ADDR_instr(v_funcaddr) CALL_REF_instr($typeuse_deftype(s.FUNCS_store[v_funcaddr].TYPE_funcinst))])) -- wf_comptype: `%`(FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) -- Expand: `%~~%`(s.FUNCS_store[v_funcaddr].TYPE_funcinst, FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst))) + -- if (|t_1_lst| = |val_lst|) -- (Val_ok: `%|-%:%`(s, v_val, t_1))*{t_1 <- t_1_lst, v_val <- val_lst} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => mk_byte_byte(``) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(v_N : N) : uN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_uN_uN(v_n) - -- if ((v_n < (2 ^ 7)) /\ (v_n < (2 ^ v_N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{v_n : n, v_m : m} {{mk_byte_byte(v_n):Bbyte} {mk_uN_uN(v_m):BuN((((v_N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => mk_uN_uN((((2 ^ 7) * v_m) + (((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((v_n >= (2 ^ 7)) /\ (v_N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(v_N : N) : sN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 - prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_sN_sN((v_n : nat <:> int)) - -- if ((v_n < (2 ^ 6)) /\ (v_n < (2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 - prod{v_n : n} mk_byte_byte(v_n):Bbyte => mk_sN_sN(((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= v_n) /\ (v_n < (2 ^ 7))) /\ ((v_n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 - prod{v_n : n, i : sN} {{mk_byte_byte(v_n):Bbyte} {i:BsN((((v_N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => mk_sN_sN(((((2 ^ 7) * ($proj_sN_0(i).0 : int <:> nat)) + (((v_n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((v_n >= (2 ^ 7)) /\ (v_N > 7)) -} - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(v_N : N) : iN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN} i:BsN(v_N) => mk_uN_iN($inv_signed_(v_N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(v_N : N) : fN - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{b_lst : byte*} b_lst:Bbyte^(((v_N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(v_N, b_lst) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : sN} ``:BsN(33) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : uN} ``:BuN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(32) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : fN} ``:BfN(64) => `` - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{v_n : n, el_lst : el*} {{mk_uN_u32(v_n):Bu32} {el:BX^v_n{el <- el_lst}}} => el_lst - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{b_lst : byte*, v_name : name} b_lst:Blist(syntax byte, grammar Bbyte) => v_name - -- if ($utf8($proj_name_0(v_name).0) = b_lst) - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{l : labelidx} l:Bu32 => l - -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7B => V128_vectype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) - -- if ($proj_sN_0(x33).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{nt : numtype} nt:Bnumtype => $valtype_numtype(nt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{vt : vectype} vt:Bvectype => $valtype_vectype(vt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype} rt:Breftype => $valtype_reftype(rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t_lst : valtype*} t_lst:Blist(syntax valtype, grammar Bvaltype) => mk_list_resulttype(t_lst) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x01 => ?(MUT_mut) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype} t:Bvaltype => $storagetype_valtype(t) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{pt : packtype} pt:Bpacktype => $storagetype_packtype(pt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, mut_opt : mut?} {{zt:Bstoragetype} {mut_opt:Bmut}} => mk_fieldtype_fieldtype(mut_opt, zt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ft_lst : fieldtype*} {{0x5F} {ft_lst:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(mk_list_list(ft_lst)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t_1_lst : valtype*, t_2_lst : valtype*} {{0x60} {mk_list_resulttype(t_1_lst):Bresulttype} {mk_list_resulttype(t_2_lst):Bresulttype}} => FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x_lst : idx*, ct : comptype} {{0x4F} {x_lst:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(FINAL_final), _IDX_typeuse(x)*{x <- x_lst}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x_lst : idx*, ct : comptype} {{0x50} {x_lst:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => SUB_subtype(?(), _IDX_typeuse(x)*{x <- x_lst}, ct) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st_lst : subtype*} {{0x4E} {st_lst:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(mk_list_list(st_lst)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(mk_list_list([st])) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{v_n : n} {{0x00} {mk_uN_u64(v_n):Bu64}} => (I32_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{v_n : n, v_m : m} {{0x01} {mk_uN_u64(v_n):Bu64} {mk_uN_u64(v_m):Bu64}} => (I32_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{v_n : n} {{0x04} {mk_uN_u64(v_n):Bu64}} => (I64_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{v_n : n, v_m : m} {{0x05} {mk_uN_u64(v_n):Bu64} {mk_uN_u64(v_m):Bu64}} => (I64_addrtype, mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m)))) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, mut_opt : mut?} {{t:Bvaltype} {mut_opt:Bmut}} => mk_globaltype_globaltype(mut_opt, t) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => mk_tabletype_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec -grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(mk_uN_typeidx(($proj_sN_0(i).0 : int <:> nat))) - -- if ($proj_sN_0(i).0 >= (0 : nat <:> int)) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{v_n : n, v_m : m} {{mk_uN_u32(v_n):Bu32} {mk_uN_u64(v_m):Bu64}} => (mk_uN_memidx(0), {ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)}) - -- if (v_n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{v_n : n, x : idx, v_m : m} {{mk_uN_u32(v_n):Bu32} {x:Bmemidx} {mk_uN_u64(v_m):Bu64}} => (x, {ALIGN mk_uN_u32((((v_n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET mk_uN_u64(v_m)}) - -- if (((2 ^ 6) <= v_n) /\ (v_n < (2 ^ 7))) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} mk_byte_byte($proj_uN_0(l).0):Bbyte => mk_uN_laneidx($proj_uN_0(l).0) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 -grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 - prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{t_lst : valtype*} {{0x1C} {t_lst:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t_lst)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 - prod{bt : blocktype, in_lst : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- in_lst}} {0x0B}} => BLOCK_instr(bt, in_lst) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 - prod{bt : blocktype, in_lst : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- in_lst}} {0x0B}} => LOOP_instr(bt, in_lst) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 - prod{bt : blocktype, in_lst : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- in_lst}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_lst, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 - prod{bt : blocktype, in_1_lst : instr*, in_2_lst : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- in_1_lst}} {0x05} {in_2:Binstr*{in_2 <- in_2_lst}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1_lst, in_2_lst) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 - prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 - prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{l_lst : labelidx*, l_n : labelidx} {{0x0E} {l_lst:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l_lst, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 - prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 - prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 - prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 - prod{bt : blocktype, c_lst : catch*, in_lst : instr*} {{0x1F} {bt:Bblocktype} {c_lst:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- in_lst}} {0x0B}} => TRY_TABLE_instr(bt, mk_list_list(c_lst), in_lst) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 - prod{null_1_opt : null?, null_2_opt : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {mk_uN_u32(24):Bu32} {(null_1_opt, null_2_opt):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1_opt, ht_1), REF_reftype(null_2_opt, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 - prod{null_1_opt : null?, null_2_opt : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {mk_uN_u32(25):Bu32} {(null_1_opt, null_2_opt):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1_opt, ht_1), REF_reftype(null_2_opt, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL_GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL_SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL_TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL_GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL_SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE_GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE_SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{y : idx, x : idx} {{0xFC} {mk_uN_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE_INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 - prod{x : idx} {{0xFC} {mk_uN_u32(13):Bu32} {x:Belemidx}} => ELEM_DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {mk_uN_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE_COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 - prod{x : idx} {{0xFC} {mk_uN_u32(15):Bu32} {x:Btableidx}} => TABLE_GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 - prod{x : idx} {{0xFC} {mk_uN_u32(16):Bu32} {x:Btableidx}} => TABLE_SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 - prod{x : idx} {{0xFC} {mk_uN_u32(17):Bu32} {x:Btableidx}} => TABLE_FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 - prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 - prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 - prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 - prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 - prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 - prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 - prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 - prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY_SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY_GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{y : idx, x : idx} {{0xFC} {mk_uN_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY_INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 - prod{x : idx} {{0xFC} {mk_uN_u32(9):Bu32} {x:Bdataidx}} => DATA_DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {mk_uN_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY_COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 - prod{x : idx} {{0xFC} {mk_uN_u32(11):Bu32} {x:Bmemidx}} => MEMORY_FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF_NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF_IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF_FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF_EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 - prod 0xD4 => REF_AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 - prod{ht : heaptype} {{0xFB} {mk_uN_u32(20):Bu32} {ht:Bheaptype}} => REF_TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 - prod{ht : heaptype} {{0xFB} {mk_uN_u32(21):Bu32} {ht:Bheaptype}} => REF_TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 - prod{ht : heaptype} {{0xFB} {mk_uN_u32(22):Bu32} {ht:Bheaptype}} => REF_CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 - prod{ht : heaptype} {{0xFB} {mk_uN_u32(23):Bu32} {ht:Bheaptype}} => REF_CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 - prod{x : idx} {{0xFB} {mk_uN_u32(0):Bu32} {x:Btypeidx}} => STRUCT_NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 - prod{x : idx} {{0xFB} {mk_uN_u32(1):Bu32} {x:Btypeidx}} => STRUCT_NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.52 - prod{x : idx, i : u32} {{0xFB} {mk_uN_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT_GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.54 - prod{x : idx, i : u32} {{0xFB} {mk_uN_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT_GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.54 - prod{x : idx, i : u32} {{0xFB} {mk_uN_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT_GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.52 - prod{x : idx, i : u32} {{0xFB} {mk_uN_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT_SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 - prod{x : idx} {{0xFB} {mk_uN_u32(6):Bu32} {x:Btypeidx}} => ARRAY_NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 - prod{x : idx} {{0xFB} {mk_uN_u32(7):Bu32} {x:Btypeidx}} => ARRAY_NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 - prod{x : idx, v_n : n} {{0xFB} {mk_uN_u32(8):Bu32} {x:Btypeidx} {mk_uN_u32(v_n):Bu32}} => ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 - prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY_NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 - prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY_NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 - prod{x : idx} {{0xFB} {mk_uN_u32(11):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 - prod{x : idx} {{0xFB} {mk_uN_u32(12):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 - prod{x : idx} {{0xFB} {mk_uN_u32(13):Bu32} {x:Btypeidx}} => ARRAY_GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 - prod{x : idx} {{0xFB} {mk_uN_u32(14):Bu32} {x:Btypeidx}} => ARRAY_SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {mk_uN_u32(15):Bu32}} => ARRAY_LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{x : idx} {{0xFB} {mk_uN_u32(16):Bu32} {x:Btypeidx}} => ARRAY_FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {mk_uN_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY_COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 - prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY_INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 - prod{x : idx, y : idx} {{0xFB} {mk_uN_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY_INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {mk_uN_u32(26):Bu32}} => ANY_CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {mk_uN_u32(27):Bu32}} => EXTERN_CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod {{0xFB} {mk_uN_u32(28):Bu32}} => REF_I31_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod {{0xFB} {mk_uN_u32(29):Bu32}} => I31_GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {mk_uN_u32(30):Bu32}} => I31_GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, i)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 - prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, p)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod 0x46 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod 0x47 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod 0x48 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod 0x49 => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod 0x4A => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod 0x4B => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod 0x4C => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod 0x4D => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod 0x4E => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod 0x4F => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod 0x51 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod 0x52 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod 0x53 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod 0x54 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod 0x55 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod 0x56 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod 0x57 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod 0x58 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod 0x59 => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod 0x5A => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod 0x5C => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod 0x5D => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod 0x5E => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod 0x5F => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod 0x60 => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod 0x61 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod 0x62 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod 0x63 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod 0x64 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod 0x65 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod 0x66 => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod 0x67 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod 0x68 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod 0x69 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod 0x6A => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod 0x6B => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod 0x6C => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod 0x6D => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod 0x6E => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod 0x6F => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod 0x70 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod 0x72 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod 0x73 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod 0x74 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod 0x75 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod 0x76 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod 0x78 => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod 0x79 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod 0x7A => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod 0x7B => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod 0xC0 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(32)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod 0x7D => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod 0x7E => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod 0x7F => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod 0x80 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod 0x81 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod 0x82 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod 0x84 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod 0x85 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod 0x86 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod 0x87 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod 0x88 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod 0x8A => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod 0x8B => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod 0x8C => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod 0x8D => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod 0x8E => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod 0x8F => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod 0x90 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod 0x91 => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod 0x92 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod 0x93 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod 0x94 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod 0x95 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod 0x96 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod 0x97 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod 0x98 => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod 0x99 => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod 0x9A => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod 0x9B => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod 0x9C => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod 0x9D => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod 0x9E => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod 0x9F => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod 0xA0 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod 0xA1 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod 0xA2 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod 0xA3 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod 0xA4 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod 0xA5 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod 0xA6 => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 - prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 - prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 - prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 - prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 - prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, mk_cvtop___0_cvtop__(I32_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 - prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 - prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 - prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 - prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 - prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 - prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 - prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 - prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 - prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 - prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 - prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 - prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 - prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod {{0xFC} {mk_uN_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {mk_uN_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {mk_uN_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {mk_uN_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {mk_uN_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {mk_uN_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {mk_uN_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {mk_uN_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {mk_uN_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 - prod{x : idx, ao : memarg} {{0xFD} {mk_uN_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 - prod{b_lst : byte*} {{0xFD} {mk_uN_u32(12):Bu32} {b:Bbyte^16{b <- b_lst}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b_lst)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 - prod{l_lst : labelidx*} {{0xFD} {mk_uN_u32(13):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx^16{l <- l_lst}}} => VSHUFFLE_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_uN_laneidx($proj_uN_0(l).0)^16{l <- l_lst}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 - prod {{0xFD} {mk_uN_u32(14):Bu32}} => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 - prod {{0xFD} {mk_uN_u32(256):Bu32}} => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 - prod {{0xFD} {mk_uN_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 - prod {{0xFD} {mk_uN_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 - prod {{0xFD} {mk_uN_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 - prod {{0xFD} {mk_uN_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 - prod {{0xFD} {mk_uN_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 - prod {{0xFD} {mk_uN_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 - prod{l : labelidx} {{0xFD} {mk_uN_u32(21):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(S_sx), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 - prod{l : labelidx} {{0xFD} {mk_uN_u32(22):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(U_sx), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(23):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 - prod{l : labelidx} {{0xFD} {mk_uN_u32(24):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(S_sx), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 - prod{l : labelidx} {{0xFD} {mk_uN_u32(25):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(U_sx), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(26):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(27):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(28):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(29):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(30):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(31):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(32):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(33):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), ?(), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {mk_uN_u32(34):Bu32} {mk_uN_laneidx($proj_uN_0(l).0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_uN_laneidx($proj_uN_0(l).0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 - prod {{0xFD} {mk_uN_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 - prod {{0xFD} {mk_uN_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 - prod {{0xFD} {mk_uN_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 - prod {{0xFD} {mk_uN_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 - prod {{0xFD} {mk_uN_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 - prod {{0xFD} {mk_uN_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 - prod {{0xFD} {mk_uN_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 - prod {{0xFD} {mk_uN_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 - prod {{0xFD} {mk_uN_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 - prod {{0xFD} {mk_uN_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 - prod {{0xFD} {mk_uN_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 - prod {{0xFD} {mk_uN_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {mk_uN_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {mk_uN_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {mk_uN_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 - prod {{0xFD} {mk_uN_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 - prod {{0xFD} {mk_uN_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 - prod {{0xFD} {mk_uN_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 - prod {{0xFD} {mk_uN_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 - prod {{0xFD} {mk_uN_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 - prod {{0xFD} {mk_uN_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 - prod {{0xFD} {mk_uN_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {mk_uN_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {mk_uN_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {mk_uN_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 - prod {{0xFD} {mk_uN_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 - prod {{0xFD} {mk_uN_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 - prod {{0xFD} {mk_uN_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 - prod {{0xFD} {mk_uN_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 - prod {{0xFD} {mk_uN_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 - prod {{0xFD} {mk_uN_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 - prod {{0xFD} {mk_uN_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 - prod {{0xFD} {mk_uN_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 - prod {{0xFD} {mk_uN_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 - prod {{0xFD} {mk_uN_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 - prod {{0xFD} {mk_uN_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {mk_uN_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {mk_uN_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {mk_uN_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {mk_uN_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {mk_uN_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 - prod {{0xFD} {mk_uN_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 - prod {{0xFD} {mk_uN_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 - prod {{0xFD} {mk_uN_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 - prod {{0xFD} {mk_uN_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 - prod {{0xFD} {mk_uN_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 - prod {{0xFD} {mk_uN_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 - prod {{0xFD} {mk_uN_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 - prod {{0xFD} {mk_uN_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 - prod {{0xFD} {mk_uN_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 - prod {{0xFD} {mk_uN_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 - prod {{0xFD} {mk_uN_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 - prod {{0xFD} {mk_uN_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 - prod {{0xFD} {mk_uN_u32(100):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 - prod {{0xFD} {mk_uN_u32(101):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 - prod {{0xFD} {mk_uN_u32(102):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 - prod {{0xFD} {mk_uN_u32(107):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 - prod {{0xFD} {mk_uN_u32(108):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 - prod {{0xFD} {mk_uN_u32(109):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 - prod {{0xFD} {mk_uN_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 - prod {{0xFD} {mk_uN_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 - prod {{0xFD} {mk_uN_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 - prod {{0xFD} {mk_uN_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 - prod {{0xFD} {mk_uN_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 - prod {{0xFD} {mk_uN_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 - prod {{0xFD} {mk_uN_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 - prod {{0xFD} {mk_uN_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 - prod {{0xFD} {mk_uN_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 - prod {{0xFD} {mk_uN_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 - prod {{0xFD} {mk_uN_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 - prod {{0xFD} {mk_uN_u32(124):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 - prod {{0xFD} {mk_uN_u32(125):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 - prod {{0xFD} {mk_uN_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 - prod {{0xFD} {mk_uN_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 - prod {{0xFD} {mk_uN_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 - prod {{0xFD} {mk_uN_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 - prod {{0xFD} {mk_uN_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 - prod {{0xFD} {mk_uN_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 - prod {{0xFD} {mk_uN_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 - prod {{0xFD} {mk_uN_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 - prod {{0xFD} {mk_uN_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 - prod {{0xFD} {mk_uN_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 - prod {{0xFD} {mk_uN_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 - prod {{0xFD} {mk_uN_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 - prod {{0xFD} {mk_uN_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 - prod {{0xFD} {mk_uN_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 - prod {{0xFD} {mk_uN_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 - prod {{0xFD} {mk_uN_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 - prod {{0xFD} {mk_uN_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 - prod {{0xFD} {mk_uN_u32(132):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 - prod {{0xFD} {mk_uN_u32(133):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 - prod {{0xFD} {mk_uN_u32(134):Bu32}} => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 - prod {{0xFD} {mk_uN_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 - prod {{0xFD} {mk_uN_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 - prod {{0xFD} {mk_uN_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 - prod {{0xFD} {mk_uN_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 - prod {{0xFD} {mk_uN_u32(139):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 - prod {{0xFD} {mk_uN_u32(140):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 - prod {{0xFD} {mk_uN_u32(141):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 - prod {{0xFD} {mk_uN_u32(156):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 - prod {{0xFD} {mk_uN_u32(157):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 - prod {{0xFD} {mk_uN_u32(158):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 - prod {{0xFD} {mk_uN_u32(159):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 - prod {{0xFD} {mk_uN_u32(274):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, `RELAXED_DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 - prod {{0xFD} {mk_uN_u32(126):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 - prod {{0xFD} {mk_uN_u32(127):Bu32}} => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 - prod {{0xFD} {mk_uN_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 - prod {{0xFD} {mk_uN_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 - prod {{0xFD} {mk_uN_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 - prod {{0xFD} {mk_uN_u32(164):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 - prod {{0xFD} {mk_uN_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 - prod {{0xFD} {mk_uN_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 - prod {{0xFD} {mk_uN_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 - prod {{0xFD} {mk_uN_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 - prod {{0xFD} {mk_uN_u32(171):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 - prod {{0xFD} {mk_uN_u32(172):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 - prod {{0xFD} {mk_uN_u32(173):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 - prod {{0xFD} {mk_uN_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 - prod {{0xFD} {mk_uN_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 - prod {{0xFD} {mk_uN_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 - prod {{0xFD} {mk_uN_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 - prod {{0xFD} {mk_uN_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 - prod {{0xFD} {mk_uN_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 - prod {{0xFD} {mk_uN_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 - prod {{0xFD} {mk_uN_u32(186):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 - prod {{0xFD} {mk_uN_u32(188):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 - prod {{0xFD} {mk_uN_u32(189):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 - prod {{0xFD} {mk_uN_u32(190):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 - prod {{0xFD} {mk_uN_u32(191):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 - prod {{0xFD} {mk_uN_u32(275):Bu32}} => VEXTTERNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextternop___0_vextternop__(I16_Jnn, 8, I32_Jnn, 4, `RELAXED_DOT_ADDS`_vextternop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 - prod {{0xFD} {mk_uN_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 - prod {{0xFD} {mk_uN_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 - prod {{0xFD} {mk_uN_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 - prod {{0xFD} {mk_uN_u32(196):Bu32}} => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 - prod {{0xFD} {mk_uN_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 - prod {{0xFD} {mk_uN_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 - prod {{0xFD} {mk_uN_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 - prod {{0xFD} {mk_uN_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 - prod {{0xFD} {mk_uN_u32(203):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 - prod {{0xFD} {mk_uN_u32(204):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 - prod {{0xFD} {mk_uN_u32(205):Bu32}} => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 - prod {{0xFD} {mk_uN_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 - prod {{0xFD} {mk_uN_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 - prod {{0xFD} {mk_uN_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 - prod {{0xFD} {mk_uN_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 - prod {{0xFD} {mk_uN_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 - prod {{0xFD} {mk_uN_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 - prod {{0xFD} {mk_uN_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 - prod {{0xFD} {mk_uN_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 - prod {{0xFD} {mk_uN_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 - prod {{0xFD} {mk_uN_u32(220):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 - prod {{0xFD} {mk_uN_u32(221):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 - prod {{0xFD} {mk_uN_u32(222):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 - prod {{0xFD} {mk_uN_u32(223):Bu32}} => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 - prod {{0xFD} {mk_uN_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 - prod {{0xFD} {mk_uN_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 - prod {{0xFD} {mk_uN_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 - prod {{0xFD} {mk_uN_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 - prod {{0xFD} {mk_uN_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 - prod {{0xFD} {mk_uN_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 - prod {{0xFD} {mk_uN_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 - prod {{0xFD} {mk_uN_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 - prod {{0xFD} {mk_uN_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 - prod {{0xFD} {mk_uN_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 - prod {{0xFD} {mk_uN_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {mk_uN_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 - prod {{0xFD} {mk_uN_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 - prod {{0xFD} {mk_uN_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 - prod {{0xFD} {mk_uN_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 - prod {{0xFD} {mk_uN_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 - prod {{0xFD} {mk_uN_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 - prod {{0xFD} {mk_uN_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 - prod {{0xFD} {mk_uN_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 - prod {{0xFD} {mk_uN_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 - prod {{0xFD} {mk_uN_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 - prod {{0xFD} {mk_uN_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 - prod {{0xFD} {mk_uN_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 - prod {{0xFD} {mk_uN_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 - prod {{0xFD} {mk_uN_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 - prod {{0xFD} {mk_uN_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 - prod {{0xFD} {mk_uN_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 - prod {{0xFD} {mk_uN_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 - prod {{0xFD} {mk_uN_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 - prod {{0xFD} {mk_uN_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {mk_uN_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 - prod {{0xFD} {mk_uN_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 - prod {{0xFD} {mk_uN_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 - prod {{0xFD} {mk_uN_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 - prod {{0xFD} {mk_uN_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 - prod {{0xFD} {mk_uN_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 - prod {{0xFD} {mk_uN_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 - prod {{0xFD} {mk_uN_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 - prod {{0xFD} {mk_uN_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 - prod {{0xFD} {mk_uN_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 - prod {{0xFD} {mk_uN_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 - prod {{0xFD} {mk_uN_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 - prod {{0xFD} {mk_uN_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 - prod {{0xFD} {mk_uN_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 - prod {{0xFD} {mk_uN_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 - prod {{0xFD} {mk_uN_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 - prod {{0xFD} {mk_uN_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 - prod {{0xFD} {mk_uN_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 - prod {{0xFD} {mk_uN_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 - prod {{0xFD} {mk_uN_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 - prod {{0xFD} {mk_uN_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 - prod {{0xFD} {mk_uN_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 - prod {{0xFD} {mk_uN_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 - prod {{0xFD} {mk_uN_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 - prod {{0xFD} {mk_uN_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 - prod {{0xFD} {mk_uN_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) -} - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{in_lst : instr*} {{in:Binstr*{in <- in_lst}} {0x0B}} => in_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bsection_(v_N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, en_lst : en*} {{mk_byte_byte(v_N):Bbyte} {mk_uN_u32(len):Bu32} {en_lst:BX}} => en_lst - -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod eps => [] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{qt : rectype} qt:Brectype => TYPE_type(qt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{ty_lst : type*} ty_lst:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{im_lst : import*} im_lst:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x_lst : idx*} x_lst:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF_NULL_instr(ht)]) - -- if (tt = mk_tabletype_tabletype(at, lim, REF_reftype(?(NULL_null), ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tab_lst : table*} tab_lst:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{mem_lst : mem*} mem_lst:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{glob_lst : global*} glob_lst:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{ex_lst : export*} ex_lst:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{v_startopt : startopt} v_startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, v_startopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, y_lst : idx*} {{mk_uN_u32(0):Bu32} {e_o:Bexpr} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF_FUNC_instr(y)*{y <- y_lst}], ACTIVE_elemmode(mk_uN_tableidx(0), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, y_lst : idx*} {{mk_uN_u32(1):Bu32} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, y_lst : idx*} {{mk_uN_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, y_lst : idx*} {{mk_uN_u32(3):Bu32} {rt:Belemkind} {y_lst:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF_FUNC_instr(y)*{y <- y_lst}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, e_lst : expr*} {{mk_uN_u32(4):Bu32} {e_O:Bexpr} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e_lst, ACTIVE_elemmode(mk_uN_tableidx(0), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, e_lst : expr*} {{mk_uN_u32(5):Bu32} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, e_lst : expr*} {{mk_uN_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e_lst, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, e_lst : expr*} {{mk_uN_u32(7):Bu32} {rt:Breftype} {e_lst:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e_lst, DECLARE_elemmode) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{elem_lst : elem*} elem_lst:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{v_n : n, t : valtype} {{mk_uN_u32(v_n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^v_n{} - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{loc_lst_lst : local**, e : expr} {{loc_lst_lst:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc_lst_lst), e) - -- if (|$concat_(syntax local, loc_lst_lst)| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, v_code : code} {{mk_uN_u32(len):Bu32} {v_code:Bfunc}} => v_code - -- if (len = 0) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{code_lst : code*} code_lst:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, b_lst : byte*} {{mk_uN_u32(0):Bu32} {e:Bexpr} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, ACTIVE_datamode(mk_uN_memidx(0), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{b_lst : byte*} {{mk_uN_u32(1):Bu32} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, b_lst : byte*} {{mk_uN_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b_lst:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b_lst, ACTIVE_datamode(x, e)) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{data_lst : data*} data_lst:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{v_n : n} mk_uN_u32(v_n):Bu32 => [mk_uN_u32(v_n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{v_nopt : nopt} v_nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, v_nopt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tag_lst : tag*} tag_lst:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag_lst - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{type_lst : type*, import_lst : import*, typeidx_lst : typeidx*, table_lst : table*, mem_lst : mem*, tag_lst : tag*, global_lst : global*, export_lst : export*, start_opt : start?, elem_lst : elem*, n_opt : n?, local_lst_lst : local**, expr_lst : expr*, data_lst : data*, func_lst : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type_lst:Btypesec} {Bcustomsec*{}} {import_lst:Bimportsec} {Bcustomsec*{}} {typeidx_lst:Bfuncsec} {Bcustomsec*{}} {table_lst:Btablesec} {Bcustomsec*{}} {mem_lst:Bmemsec} {Bcustomsec*{}} {tag_lst:Btagsec} {Bcustomsec*{}} {global_lst:Bglobalsec} {Bcustomsec*{}} {export_lst:Bexportsec} {Bcustomsec*{}} {start_opt:Bstartsec} {Bcustomsec*{}} {elem_lst:Belemsec} {Bcustomsec*{}} {mk_uN_u32(v_n)?{v_n <- n_opt}:Bdatacntsec} {Bcustomsec*{}} {(local_lst, v_expr)*{v_expr <- expr_lst, local_lst <- local_lst_lst}:Bcodesec} {Bcustomsec*{}} {data_lst:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst) - -- (if (v_n = |data_lst|))?{v_n <- n_opt} - -- if ((n_opt =/= ?()) \/ ($dataidx_funcs(func_lst) = [])) - -- (if (v_func = FUNC_func(v_typeidx, local_lst, v_expr)))*{v_expr <- expr_lst, v_func <- func_lst, local_lst <- local_lst_lst, v_typeidx <- typeidx_lst} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => mk_char_char(``) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tchar*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:eps => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => mk_char_char(``) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => mk_char_char(``) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x39 => 9 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod 0x66 => 15 - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 -grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 - prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 - prod{v_n : n, h : nat} {{v_n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * v_n) + h) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tchar => c - -- if (((($proj_char_0(c).0 >= 32) /\ ($proj_char_0(c).0 =/= 127)) /\ (c =/= mk_char_char(34))) /\ (c =/= mk_char_char(92))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => mk_char_char(9) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => mk_char_char(10) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => mk_char_char(13) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => mk_char_char(34) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => mk_char_char(39) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => mk_char_char(92) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} {{"\\u{"} {v_n:Thexnum} {"}"}} => mk_char_char(v_n) - -- if ((v_n < 55296) \/ ((59392 <= v_n) /\ (v_n < 1114112))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [mk_byte_byte(((16 * h_1) + h_2))] - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{b_lst_lst : byte**} {{"\""} {b_lst:Tstringelem*{b_lst <- b_lst_lst}} {"\""}} => $concat_(syntax byte, b_lst_lst) - -- if (|$concat_(syntax byte, b_lst_lst)| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{b_lst : byte*, c_lst : char*} b_lst:Tstring => mk_name_name(c_lst) - -- if (b_lst = $utf8(c_lst)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c_lst : char*} {{"$"} {c_lst:Tidchar+{}}} => mk_name_name(c_lst) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c_lst : char*} {{"$"} {mk_name_name(c_lst):Tname}} => mk_name_name(c_lst) - -- if (|c_lst| > 0) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} [``]:{{Tidchar} {Tstring} {","} {";"} {"["} {"]"} {"{"} {"}"}}+{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Treserved => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : name} ``:Tname => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 -grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 - prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 -grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 - prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(41))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 - prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= mk_char_char(59)) /\ (c =/= mk_char_char(40))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 - prod{`` : ()} ``:Tblockcomment => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : text} ``:"" => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if (($proj_char_0(c).0 =/= 10) /\ ($proj_char_0(c).0 =/= 13)) - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:{{";;"} {Tlinechar*{}} {Tnewline Teof}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tblockcomment => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:0x09 => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 -grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 - prod{`` : ()} [``]:{{" "} Tformat Tcomment Tannot}*{} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 -grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 - prod{`` : ()} ``:{{"(@"} Tannotid {{Tspace Ttoken}*{}} {")"}} => (``, ()).1 -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "-" => - (1 : nat <:> int) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 -grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 - prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 - prod{v_n : n, d : nat} {{v_n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * v_n) + d) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TuN(v_N : N) : uN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} v_n:Tnum => mk_uN_uN(v_n) - -- if (v_n < (2 ^ v_N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} {{"0x"} {v_n:Thexnum}} => mk_uN_uN(v_n) - -- if (v_n < (2 ^ v_N)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TsN(v_N : N) : sN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, v_n : n} {{s:Tsign} {mk_uN_uN(v_n):TuN(v_N)}} => mk_sN_sN((s * (v_n : nat <:> int))) - -- if ((- ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (v_n : nat <:> int))) /\ ((s * (v_n : nat <:> int)) < ((2 ^ (((v_N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TiN(v_N : N) : iN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} mk_uN_uN(v_n):TuN(v_N) => mk_uN_iN(v_n) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN} i:TsN(v_N) => mk_uN_iN($inv_signed_(v_N, $proj_sN_0(i).0)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 -grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 - prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 - prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 -grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 - prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 - prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(v_N : N, rat : rat) : fNmag - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{p:Tmant} {{"E"} {"e"}} {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} {{"P"} {"p"}} {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfNmag(v_N : N) : fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Tfloat => $ieee_(v_N, q) - -- if ($ieee_(v_N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : rat} q:Thexfloat => $ieee_(v_N, q) - -- if ($ieee_(v_N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(v_N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{v_n : n} {{"nan:0x"} {v_n:Thexnum}} => NAN_fNmag(v_n) - -- if ((1 <= v_n) /\ (v_n < (2 ^ $signif(v_N)))) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar TfN(v_N : N) : fN - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(v_N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{q : fNmag} {{- (1 : nat <:> int):Tsign} {q:TfNmag(v_N)}} => NEG_fN(q) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : uN} ``:TuN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(8) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(16) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN} ``:TiN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(32) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : fN} ``:TfN(64) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{el_lst : el*} el:TX*{el <- el_lst} => el_lst - -- if (|el_lst| < (2 ^ 32)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{name_opt_lst : name?*} name?*, - TAGS{name_opt_lst : name?*} name?*, - GLOBALS{name_opt_lst : name?*} name?*, - MEMS{name_opt_lst : name?*} name?*, - TABLES{name_opt_lst : name?*} name?*, - FUNCS{name_opt_lst : name?*} name?*, - DATAS{name_opt_lst : name?*} name?*, - ELEMS{name_opt_lst : name?*} name?*, - LOCALS{name_opt_lst : name?*} name?*, - LABELS{name_opt_lst : name?*} name?*, - FIELDS{name_opt_lst_lst : name?**} name?**, - TYPEDEFS{deftype_opt_lst : deftype?*} deftype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation wf_idctxt: `%`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule idctxt_case_{var_0 : name?*, var_1 : name?*, var_2 : name?*, var_3 : name?*, var_4 : name?*, var_5 : name?*, var_6 : name?*, var_7 : name?*, var_8 : name?*, var_9 : name?*, var_10 : name?**, var_11 : deftype?*}: - `%`({TYPES var_0, TAGS var_1, GLOBALS var_2, MEMS var_3, TABLES var_4, FUNCS var_5, DATAS var_6, ELEMS var_7, LOCALS var_8, LABELS var_9, FIELDS var_10, TYPEDEFS var_11}) - -- (wf_name: `%`(var_0))?{var_0 <- var_0}*{var_0 <- var_0} - -- (wf_name: `%`(var_1))?{var_1 <- var_1}*{var_1 <- var_1} - -- (wf_name: `%`(var_2))?{var_2 <- var_2}*{var_2 <- var_2} - -- (wf_name: `%`(var_3))?{var_3 <- var_3}*{var_3 <- var_3} - -- (wf_name: `%`(var_4))?{var_4 <- var_4}*{var_4 <- var_4} - -- (wf_name: `%`(var_5))?{var_5 <- var_5}*{var_5 <- var_5} - -- (wf_name: `%`(var_6))?{var_6 <- var_6}*{var_6 <- var_6} - -- (wf_name: `%`(var_7))?{var_7 <- var_7}*{var_7 <- var_7} - -- (wf_name: `%`(var_8))?{var_8 <- var_8}*{var_8 <- var_8} - -- (wf_name: `%`(var_9))?{var_9 <- var_9}*{var_9 <- var_9} - -- (wf_name: `%`(var_10))?{var_10 <- var_10}*{var_10 <- var_10}*{var_10 <- var_10} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(var_0 : idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - -- wf_idctxt: `%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.52 - def $concat_idctxt{v_I : idctxt, I' : idctxt}([v_I I']) = v_I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule mk_Idctxt_ok{v_I : I, field_lst_lst : char**}: - `|-%:OK`(v_I) - -- wf_idctxt: `%`(v_I) - -- (wf_name: `%`(mk_name_name(field_lst)))*{field_lst <- field_lst_lst} - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, v_I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(mk_name_name(field_lst))])))*{field_lst <- field_lst_lst} - -- if ([?(mk_name_name(field_lst))*{field_lst <- field_lst_lst}] = v_I.FIELDS_I) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x - -- if (ids[$proj_uN_0(x).0] = ?(id)) - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttypeidx_(v_I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.TYPES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttagidx_(v_I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.TAGS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tglobalidx_(v_I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.GLOBALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tmemidx_(v_I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.MEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ttableidx_(v_I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.TABLES_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfuncidx_(v_I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.FUNCS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tdataidx_(v_I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.DATAS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Telemidx_(v_I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.ELEMS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlocalidx_(v_I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.LOCALS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tlabelidx_(v_I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.LABELS_I) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Tfieldidx__(v_I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : idx} ``:Tidx_(v_I.FIELDS_I[$proj_uN_0(x).0]) => `` - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Texternidx_(v_I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(v_I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(v_I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(v_I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(v_I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(v_I)} {")"}} => FUNC_externidx(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "v128" => V128_vectype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Theaptype_(v_I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx} x:Ttypeidx_(v_I) => _IDX_heaptype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "null" => NULL_null - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Treftype_(v_I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{null_opt : null?, ht : heaptype} {{"("} {"ref"} {null_opt:Tnull?{}} {ht:Theaptype_(v_I)} {")"}} => REF_reftype(null_opt, ht) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tvaltype_(v_I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{nt : numtype} nt:Tnumtype => $valtype_numtype(nt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{vt : vectype} vt:Tvectype => $valtype_vectype(vt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{rt : reftype} rt:Treftype_(v_I) => $valtype_reftype(rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tstoragetype_(v_I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(v_I) => $storagetype_valtype(t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{pt : packtype} pt:Tpacktype => $storagetype_packtype(pt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfieldtype_(v_I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} zt:Tstoragetype_(v_I) => mk_fieldtype_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(v_I)} {")"}} => mk_fieldtype_fieldtype(?(MUT_mut), zt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfield_(v_I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{id_opt : char?, ft : fieldtype} {{"("} {"field"} {?(mk_name_name(lift(id_opt))):Tid?{}} {ft:Tfieldtype_(v_I)} {")"}} => (ft, ?(mk_name_name(lift(id_opt)))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tparam_(v_I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{id_opt : char?, t : valtype} {{"("} {"param"} {?(mk_name_name(lift(id_opt))):Tid?{}} {t:Tvaltype_(v_I)} {")"}} => (t, ?(mk_name_name(lift(id_opt)))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tresult_(v_I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(v_I)} {")"}} => t - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tcomptype_(v_I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft_lst : fieldtype*, id_opt_lst : char?*} {{"("} {"struct"} {(ft, ?(mk_name_name(lift(id_opt))))*{ft <- ft_lst, id_opt <- id_opt_lst}:Tlist(syntax (fieldtype, name?), grammar Tfield_(v_I))} {")"}} => (STRUCT_comptype(mk_list_list(ft_lst)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(mk_name_name(lift(id_opt)))*{id_opt <- id_opt_lst}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(v_I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t_1_lst : valtype*, id_opt_lst : char?*, t_2_lst : valtype*} {{"("} {"func"} {(t_1, ?(mk_name_name(lift(id_opt))))*{id_opt <- id_opt_lst, t_1 <- t_1_lst}:Tlist(syntax (valtype, name?), grammar Tparam_(v_I))} {t_2_lst:Tlist(syntax valtype, grammar Tresult_(v_I))} {")"}} => (FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "final" => FINAL_final - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tsubtype_(v_I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{fin_opt : final?, x_lst : idx*, ct : comptype, I' : I} {{"("} {"sub"} {fin_opt:Tfinal?{}} {x_lst:Tlist(syntax typeidx, grammar Ttypeidx_(v_I))} {(ct, I'):Tcomptype_(v_I)} {")"}} => (SUB_subtype(fin_opt, _IDX_typeuse(x)*{x <- x_lst}, ct), I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypedef_(v_I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{id_opt : char?, st : subtype, I' : I} {{"("} {"type"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(st, I'):Tsubtype_(v_I)} {")"}} => (st, I' +++ {TYPES [?(mk_name_name(lift(id_opt)))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Trectype_(v_I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{st_lst : subtype*, I'_lst : I*} {{"("} {"rec"} {(st, I')*{I' <- I'_lst, st <- st_lst}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(v_I))} {")"}} => (REC_rectype(mk_list_list(st_lst)), $concat_idctxt(I'_lst)) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{v_n : n} mk_uN_u64(v_n):Tu64 => mk_limits_limits(mk_uN_u64(v_n), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{v_n : n, v_m : m} {{mk_uN_u64(v_n):Tu64} {mk_uN_u64(v_m):Tu64}} => mk_limits_limits(mk_uN_u64(v_n), ?(mk_uN_u64(v_m))) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttypeuse_(v_I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, st_lst : subtype*, i : n, t_1_lst : valtype*, t_2_lst : valtype*} {{"("} {"type"} {x:Ttypeidx_(v_I)} {")"}} => (x, I') - -- if (v_I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(mk_list_list(st_lst)), i))) - -- if (st_lst[i] = SUB_subtype(?(FINAL_final), [], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name([]))^|t_1_lst|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, t_1_lst : valtype*, id_opt_lst : char?*, t_2_lst : valtype*, I' : I, st_lst : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(v_I)} {")"} {(t_1, ?(mk_name_name(lift(id_opt))))*{id_opt <- id_opt_lst, t_1 <- t_1_lst}:Tparam_(v_I)*{}} {t_2_lst:Tresult_(v_I)*{}}} => (x, I') - -- if (v_I.TYPEDEFS_I[$proj_uN_0(x).0] = ?(_DEF_deftype(REC_rectype(mk_list_list(st_lst)), i))) - -- if (st_lst[i] = SUB_subtype(?(FINAL_final), [], FUNC_comptype(mk_list_resulttype(t_1_lst), mk_list_resulttype(t_2_lst)))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name(lift(id_opt)))*{id_opt <- id_opt_lst}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttagtype_(v_I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(v_I) => _IDX_tagtype(x) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tglobaltype_(v_I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} t:Tvaltype_(v_I) => mk_globaltype_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(v_I)} {")"}} => mk_globaltype_globaltype(?(MUT_mut), t) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Tmemtype_(v_I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Ttabletype_(v_I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(v_I)}} => mk_tabletype_tabletype(at, lim, rt) - -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec -grammar Texterntype_(v_I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{id_opt : char?, jt : tagtype} {{"("} {"tag"} {?(mk_name_name(lift(id_opt))):Tid?{}} {jt:Ttagtype_(v_I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(mk_name_name(lift(id_opt)))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{id_opt : char?, gt : globaltype} {{"("} {"global"} {?(mk_name_name(lift(id_opt))):Tid?{}} {gt:Tglobaltype_(v_I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(mk_name_name(lift(id_opt)))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{id_opt : char?, mt : memtype} {{"("} {"memory"} {?(mk_name_name(lift(id_opt))):Tid?{}} {mt:Tmemtype_(v_I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(mk_name_name(lift(id_opt)))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{id_opt : char?, tt : tabletype} {{"("} {"table"} {?(mk_name_name(lift(id_opt))):Tid?{}} {tt:Ttabletype_(v_I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(mk_name_name(lift(id_opt)))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{id_opt : char?, x : idx, I' : I} {{"("} {"func"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(x, I'):Ttypeuse_(v_I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(mk_name_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlabel_(v_I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ v_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ v_I) - -- if ~ (?(id) <- v_I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ v_I[LABELS_I[$proj_uN_0(x).0] = ?()]) - -- if (?(id) = v_I.LABELS_I[$proj_uN_0(x).0]) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tblocktype_(v_I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{t_opt : valtype?} t_opt:Tresult_(v_I)?{} => _RESULT_blocktype(t_opt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, I' : I} (x, I'):Ttypeuse_(v_I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tcatch_(v_I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(v_I)} {l:Tlabelidx_(v_I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(v_I)} {l:Tlabelidx_(v_I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(v_I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(v_I)} {")"}} => CATCH_ALL_REF_catch(l) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tfoldedinstr_(v_I : I) : instr* - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : u8} i:Tu8 => i - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(v_N : N) : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{v_m : m, v_n : n} {{"align="} {mk_uN_u64(v_m):Tu64}} => mk_uN_u64(v_m) - -- if (v_m = (2 ^ v_n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => mk_uN_u64(v_N) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{v_n : n} {{"offset="} {mk_uN_u64(v_n):Tu64}} => mk_uN_u64(v_n) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => mk_uN_u64(0) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tmemarg_(v_N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{v_n : n, v_m : m} {{mk_uN_u64(v_n):Toffset} {mk_uN_u64(v_m):Talign_(v_N)}} => {ALIGN mk_uN_u32(v_n), OFFSET mk_uN_u64(v_m)} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Tplaininstr_(v_I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{t_lst_opt : valtype*?} {{"select"} {t_lst:Tresult_(v_I)*{}?{t_lst <- t_lst_opt}}} => SELECT_instr(t_lst_opt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(v_I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(v_I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l_lst : labelidx*, l' : labelidx} {{"br_table"} {l_lst:Tlabelidx_(v_I)*{}} {l':Tlabelidx_(v_I)}} => BR_TABLE_instr(l_lst, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(v_I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(v_I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(v_I)} {rt_1:Treftype_(v_I)} {rt_2:Treftype_(v_I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast_fail"} {l:Tlabelidx_(v_I)} {rt_1:Treftype_(v_I)} {rt_2:Treftype_(v_I)}} => BR_ON_CAST_FAIL_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(v_I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(v_I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(v_I)} {(y, I'):Ttypeuse_(v_I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call"} {x:Tfuncidx_(v_I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(v_I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(v_I)} {(y, I'):Ttypeuse_(v_I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(mk_name_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(v_I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(v_I)}} => LOCAL_GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(v_I)}} => LOCAL_SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(v_I)}} => LOCAL_TEE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(v_I)}} => GLOBAL_GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(v_I)}} => GLOBAL_SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(v_I)}} => TABLE_GET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(v_I)}} => TABLE_SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(v_I)}} => TABLE_SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(v_I)}} => TABLE_GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(v_I)}} => TABLE_FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(v_I)} {x_2:Ttableidx_(v_I)}} => TABLE_COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(v_I)} {y:Telemidx_(v_I)}} => TABLE_INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(v_I)}} => ELEM_DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(mk_loadop__0_loadop_(I32_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(8), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(16), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), S_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(mk_loadop__0_loadop_(I64_Inn, mk_loadop_Inn_loadop_Inn(mk_sz_sz(32), U_sx))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(mk_sz_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(mk_sz_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(mk_sz_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(mk_storeop__0_storeop_(I32_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(8)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(16)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(mk_storeop__0_storeop_(I64_Inn, mk_storeop_Inn_storeop_Inn(mk_sz_sz(32)))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(v_I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, mk_sz_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(v_I)}} => MEMORY_SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(v_I)}} => MEMORY_GROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(v_I)}} => MEMORY_FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(v_I)} {x_2:Tmemidx_(v_I)}} => MEMORY_COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(v_I)} {y:Tdataidx_(v_I)}} => MEMORY_INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(v_I)}} => DATA_DROP_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(v_I)}} => REF_NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(v_I)}} => REF_FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF_IS_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF_AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF_EQ_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(v_I)}} => REF_TEST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(v_I)}} => REF_CAST_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF_I31_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31_GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31_GET_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(v_I)}} => STRUCT_NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(v_I)}} => STRUCT_NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(v_I)} {i:Tfieldidx__(v_I, x)}} => STRUCT_SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(v_I)}} => ARRAY_NEW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(v_I)}} => ARRAY_NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, v_n : n} {{"array.new_fixed"} {x:Ttypeidx_(v_I)} {mk_uN_u32(v_n):Tu32}} => ARRAY_NEW_FIXED_instr(x, mk_uN_u32(v_n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(v_I)} {y:Tdataidx_(v_I)}} => ARRAY_NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(v_I)} {y:Telemidx_(v_I)}} => ARRAY_NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(v_I)}} => ARRAY_GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(v_I)}} => ARRAY_SET_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY_LEN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(v_I)}} => ARRAY_FILL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(v_I)} {x_2:Ttypeidx_(v_I)}} => ARRAY_COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(v_I)} {y:Tdataidx_(v_I)}} => ARRAY_INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(v_I)} {y:Telemidx_(v_I)}} => ARRAY_INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY_CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN_CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, mk_num__0_num_(I32_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, mk_num__0_num_(I64_Inn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, mk_num__1_num_(F32_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, mk_num__1_num_(F64_Fnn, c)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, mk_testop__0_testop_(I32_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, mk_testop__0_testop_(I64_Inn, EQZ_testop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, mk_relop__0_relop_(I32_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, EQ_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, NE_relop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GT_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, LE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, mk_relop__0_relop_(I64_Inn, GE_relop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, mk_relop__1_relop_(F32_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, EQ_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, NE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GT_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, LE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, mk_relop__1_relop_(F64_Fnn, GE_relop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, mk_unop__0_unop_(I32_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CLZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, CTZ_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, POPCNT_unop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, mk_unop__0_unop_(I64_Inn, EXTEND_unop_Inn(mk_sz_sz(32)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, mk_unop__1_unop_(F32_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, ABS_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEG_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, SQRT_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, CEIL_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, FLOOR_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, TRUNC_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, mk_unop__1_unop_(F64_Fnn, NEAREST_unop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_s" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ADD_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SUB_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, MUL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, DIV_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, REM_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, AND_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, OR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, XOR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_s" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, SHR_binop_Inn(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTL_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, mk_binop__0_binop_(I64_Inn, ROTR_binop_Inn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, mk_binop__1_binop_(F32_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, SUB_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, DIV_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MIN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MAX_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, COPYSIGN_binop_Fnn)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I32_Inn, WRAP_cvtop__Inn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I32_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, mk_cvtop___0_cvtop__(I64_Inn, I64_Inn, EXTEND_cvtop__Inn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, TRUNC_SAT_cvtop__Fnn_1_Inn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, mk_cvtop___3_cvtop__(F64_Fnn, F32_Fnn, DEMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F32_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, mk_cvtop___3_cvtop__(F32_Fnn, F64_Fnn, PROMOTE_cvtop__Fnn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, CONVERT_cvtop__Inn_1_Fnn_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, mk_cvtop___2_cvtop__(F32_Fnn, I32_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, mk_cvtop___2_cvtop__(F64_Fnn, I64_Inn, REINTERPRET_cvtop__Fnn_1_Inn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, mk_cvtop___1_cvtop__(I32_Inn, F32_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, mk_cvtop___1_cvtop__(I64_Inn, F64_Fnn, REINTERPRET_cvtop__Inn_1_Fnn_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c_lst : u8*} {{"v128.const"} {"i8x16"} {c_lst:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- c_lst}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c_lst : u16*} {{"v128.const"} {"i16x8"} {c_lst:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- c_lst}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c_lst : u32*} {{"v128.const"} {"i32x4"} {c_lst:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- c_lst}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c_lst : u64*} {{"v128.const"} {"i64x2"} {c_lst:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- c_lst}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c_lst : f32*} {{"v128.const"} {"f32x4"} {c_lst:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- c_lst}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c_lst : f64*} {{"v128.const"} {"f64x2"} {c_lst:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- c_lst}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i_lst : laneidx*} {{"i8x16.shuffle"} {i_lst:Tlaneidx^16{}}} => VSHUFFLE_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), i_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(mk_bshape_bshape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vswizzlop__0_vswizzlop_(16, RELAXED_SWIZZLE_vswizzlop_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vtestop__0_vtestop_(I8_Jnn, 16, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vtestop__0_vtestop_(I16_Jnn, 8, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vtestop__0_vtestop_(I32_Jnn, 4, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vtestop__0_vtestop_(I64_Jnn, 2, ALL_TRUE_vtestop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vrelop__0_vrelop_(I8_Jnn, 16, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vrelop__0_vrelop_(I16_Jnn, 8, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GT_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, LE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vrelop__0_vrelop_(I32_Jnn, 4, GE_vrelop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, EQ_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, NE_vrelop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GT_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, LE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vrelop__0_vrelop_(I64_Jnn, 2, GE_vrelop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vrelop__1_vrelop_(F32_Fnn, 4, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, EQ_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, NE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GT_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, LE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vrelop__1_vrelop_(F64_Fnn, 2, GE_vrelop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vunop__0_vunop_(I8_Jnn, 16, POPCNT_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vunop__0_vunop_(I16_Jnn, 8, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vunop__0_vunop_(I32_Jnn, 4, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, ABS_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vunop__0_vunop_(I64_Jnn, 2, NEG_vunop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vunop__1_vunop_(F32_Fnn, 4, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, ABS_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEG_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, SQRT_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, CEIL_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, FLOOR_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, TRUNC_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vunop__1_vunop_(F64_Fnn, 2, NEAREST_vunop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vbinop__0_vbinop_(I8_Jnn, 16, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, ADD_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, SUB_SAT_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `AVGRU`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `Q15MULR_SATS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vbinop__0_vbinop_(I16_Jnn, 8, `RELAXED_Q15MULRS`_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MIN_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vbinop__0_vbinop_(I32_Jnn, 4, MAX_vbinop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, ADD_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, SUB_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vbinop__0_vbinop_(I64_Jnn, 2, MUL_vbinop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vbinop__1_vbinop_(F32_Fnn, 4, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, ADD_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, SUB_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MUL_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, DIV_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, PMAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MIN_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vbinop__1_vbinop_(F64_Fnn, 2, RELAXED_MAX_vbinop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vternop__0_vternop_(I8_Jnn, 16, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vternop__0_vternop_(I16_Jnn, 8, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vternop__0_vternop_(I32_Jnn, 4, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), mk_vternop__0_vternop_(I64_Jnn, 2, RELAXED_LANESELECT_vternop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vternop__1_vternop_(F32_Fnn, 4, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_MADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vternop__1_vternop_(F64_Fnn, 2, RELAXED_NMADD_vternop_Fnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vshiftop__0_vshiftop_(I8_Jnn, 16, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vshiftop__0_vshiftop_(I16_Jnn, 8, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vshiftop__0_vshiftop_(I32_Jnn, 4, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHL_vshiftop_Jnn_M)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_vshiftop__0_vshiftop_(I64_Jnn, 2, SHR_vshiftop_Jnn_M(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, mk_dim_dim(8)), `%X%`_shape(I8_lanetype, mk_dim_dim(16)), mk_vcvtop___0_vcvtop__(I8_Jnn, 16, I16_Jnn, 8, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(I16_lanetype, mk_dim_dim(8)), mk_vcvtop___0_vcvtop__(I16_Jnn, 8, I32_Jnn, 4, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, TRUNC_SAT_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___2_vcvtop__(F32_Fnn, 4, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?()))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(S_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___2_vcvtop__(F64_Fnn, 2, I32_Jnn, 4, RELAXED_TRUNC_vcvtop__Fnn_1_M_1_Jnn_2_M_2(U_sx, ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___0_vcvtop__(I32_Jnn, 4, I64_Jnn, 2, EXTEND_vcvtop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(F64_lanetype, mk_dim_dim(2)), mk_vcvtop___3_vcvtop__(F64_Fnn, 2, F32_Fnn, 4, DEMOTE_vcvtop__Fnn_1_M_1_Fnn_2_M_2(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, mk_dim_dim(4)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F32_Fnn, 4, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(F32_lanetype, mk_dim_dim(4)), mk_vcvtop___3_vcvtop__(F32_Fnn, 4, F64_Fnn, 2, `PROMOTELOW`_vcvtop__Fnn_1_M_1_Fnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, mk_dim_dim(2)), `%X%`_shape(I32_lanetype, mk_dim_dim(4)), mk_vcvtop___1_vcvtop__(I32_Jnn, 4, F64_Fnn, 2, CONVERT_vcvtop__Jnn_1_M_1_Fnn_2_M_2(?(LOW_half), U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextunop___0_vextunop__(I8_Jnn, 16, I16_Jnn, 8, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextunop___0_vextunop__(I16_Jnn, 8, I32_Jnn, 4, EXTADD_PAIRWISE_vextunop__Jnn_1_M_1_Jnn_2_M_2(U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_ishape_ishape(`%X%`_shape(I8_lanetype, mk_dim_dim(16))), mk_vextbinop___0_vextbinop__(I8_Jnn, 16, I16_Jnn, 8, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_ishape_ishape(`%X%`_shape(I16_lanetype, mk_dim_dim(8))), mk_vextbinop___0_vextbinop__(I16_Jnn, 8, I32_Jnn, 4, `DOTS`_vextbinop__Jnn_1_M_1_Jnn_2_M_2)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(LOW_half, U_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, S_sx))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(mk_ishape_ishape(`%X%`_shape(I64_lanetype, mk_dim_dim(2))), mk_ishape_ishape(`%X%`_shape(I32_lanetype, mk_dim_dim(4))), mk_vextbinop___0_vextbinop__(I32_Jnn, 4, I64_Jnn, 2, EXTMUL_vextbinop__Jnn_1_M_1_Jnn_2_M_2(HIGH_half, U_sx))) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 -grammar Tinstr_(v_I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 - prod{in : instr} in:Tplaininstr_(v_I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 - prod{in : instr} in:Tblockinstr_(v_I) => in - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 -grammar Tinstrs_(v_I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 - prod{in_lst : instr*} in_lst:Tinstr_(v_I)*{} => in_lst - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 - prod{in_lst_lst : instr**} in_lst_lst:Tfoldedinstr_(v_I)*{} => $concat_(syntax instr, in_lst_lst) - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 -grammar Tblockinstr_(v_I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 - prod{id_opt : char?, I' : I, bt : blocktype, in_lst : instr*, id'_opt : char?} {{"block"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => BLOCK_instr(bt, in_lst) - -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 - prod{id_opt : char?, I' : I, bt : blocktype, in_lst : instr*, id'_opt : char?} {{"loop"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => LOOP_instr(bt, in_lst) - -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 - prod{id_opt : char?, I' : I, bt : blocktype, in_1_lst : instr*, id_1_opt : char?, in_2_lst : instr*, id_2_opt : char?} {{"if"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {in_1_lst:Tinstrs_(I')} {"else"} {?(mk_name_name(lift(id_1_opt))):Tid?{}} {in_2_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id_2_opt))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1_lst, in_2_lst) - -- if (((id_1_opt = ?()) \/ (id_1_opt = id_opt)) /\ ((id_2_opt = ?()) \/ (id_2_opt = id_opt))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 - prod{id_opt : char?, I' : I, bt : blocktype, c_lst : catch*, in_lst : instr*, id'_opt : char?} {{"try_table"} {(?(mk_name_name(lift(id_opt))), I'):Tlabel_(v_I)} {bt:Tblocktype_(v_I)} {c_lst:Tcatch_(v_I)*{}} {in_lst:Tinstrs_(I')} {"end"} {?(mk_name_name(lift(id'_opt))):Tid?{}}} => TRY_TABLE_instr(bt, mk_list_list(c_lst), in_lst) - -- if ((id'_opt = ?()) \/ (id'_opt = id_opt)) -} - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Texpr_(v_I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{in_lst : instr*} in_lst:Tinstrs_(v_I) => in_lst - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttype_(v_I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, st_lst : subtype*, v_n : n, i_lst : nat*} (qt, I'):Trectype_(v_I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(mk_list_list(st_lst))) - -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(mk_name_name(lift(id_opt)))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tglobal_(v_I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(mk_name_name(lift(id_opt))):Tid?{}} {gt:Tglobaltype_(v_I)} {e:Texpr_(v_I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(mk_name_name(lift(id_opt)))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmem_(v_I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, mt : memtype} {{"("} {"memory"} {?(mk_name_name(lift(id_opt))):Tid?{}} {mt:Tmemtype_(v_I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(mk_name_name(lift(id_opt)))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttable_(v_I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(mk_name_name(lift(id_opt))):Tid?{}} {tt:Ttabletype_(v_I)} {e:Texpr_(v_I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(mk_name_name(lift(id_opt)))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tlocal_(v_I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, t : valtype} {{"("} {"local"} {?(mk_name_name(lift(id_opt))):Tid?{}} {t:Tvaltype_(v_I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(mk_name_name(lift(id_opt)))], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tfunc_(v_I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, x : idx, I_1 : I, loc_lst_lst : local**, I_2_lst : I*, e : expr, I' : I} {{"("} {"func"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(x, I_1):Ttypeuse_(v_I)} {(loc_lst, I_2):Tlocal_(v_I)*{I_2 <- I_2_lst, loc_lst <- loc_lst_lst}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc_lst_lst), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(mk_name_name(lift(id_opt)))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -- if (I' = v_I +++ I_1 +++ $concat_idctxt(I_2_lst)) - -- Idctxt_ok: `|-%:OK`(I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{b_lst_lst : byte**} b_lst_lst:Tstring*{} => $concat_(syntax byte, b_lst_lst) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmemuse_(v_I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(v_I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(v_I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"offset"} {e:Texpr_(v_I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdata_(v_I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, b_lst : byte*} {{"("} {"data"} {?(mk_name_name(lift(id_opt))):Tid?{}} {b_lst:Tdatastring} {")"}} => (DATA_data(b_lst, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(mk_name_name(lift(id_opt)))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, x : idx, e : expr, b_lst : byte*} {{"("} {"data"} {?(mk_name_name(lift(id_opt))):Tid?{}} {x:Tmemuse_(v_I)} {e:Toffset_(v_I)} {b_lst:Tdatastring} {")"}} => (DATA_data(b_lst, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(mk_name_name(lift(id_opt)))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(v_I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, e_lst : expr*} {{rt:Treftype_(v_I)} {e_lst:Tlist(syntax expr, grammar Texpr_(v_I))}} => (rt, e_lst) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(v_I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(v_I)} {")"}} => x - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(v_I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, rt : reftype, e_lst : expr*} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, x : idx, e' : expr, rt : reftype, e_lst : expr*} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {x:Ttableuse_(v_I)} {e':Toffset_(v_I)} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{id_opt : char?, rt : reftype, e_lst : expr*} {{"("} {"elem"} {?(mk_name_name(lift(id_opt))):Tid?{}} {"declare"} {(rt, e_lst):Telemlist_(v_I)} {")"}} => (ELEM_elem(rt, e_lst, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(mk_name_name(lift(id_opt)))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(v_I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(v_I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(v_I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(v_I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(v_I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(v_I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(v_I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(v_I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(v_I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(v_I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(v_I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(v_I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(v_I)} {Texpr_(v_I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(v_I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemdots_(v_I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(v_I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(v_I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(v_I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(v_I)} {Texpr_(v_I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(v_I)} {"("} {"elem"} {Telemlist_(v_I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(v_I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(v_I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(v_I)} {Tlocal_(v_I)*{}} {Texpr_(v_I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(v_I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(v_I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(v_I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmem_(v_I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(v_I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(v_I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamem_(v_I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(v_I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{v_rectype : rectype}(v_rectype : rectype) - | IMPORT{v_name : name, v_externtype : externtype}(v_name : name, name, v_externtype : externtype) - | TAG{v_tagtype : tagtype}(v_tagtype : tagtype) - | GLOBAL{v_globaltype : globaltype, v_expr : expr}(v_globaltype : globaltype, v_expr : expr) - | MEMORY{v_memtype : memtype}(v_memtype : memtype) - | TABLE{v_tabletype : tabletype, v_expr : expr}(v_tabletype : tabletype, v_expr : expr) - | FUNC{v_typeidx : typeidx, local_lst : local*, v_expr : expr}(v_typeidx : typeidx, local_lst : local*, v_expr : expr) - | DATA{byte_lst : byte*, v_datamode : datamode}(byte_lst : byte*, v_datamode : datamode) - | ELEM{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode}(v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode) - | START{v_funcidx : funcidx}(v_funcidx : funcidx) - | EXPORT{v_name : name, v_externidx : externidx}(v_name : name, v_externidx : externidx) - -def $decl_data(var_0 : data) : decl - def $decl_data{x0 : byte*, x1 : datamode}(DATA_data(x0, x1)) = DATA_decl(x0, x1) - -def $decl_elem(var_0 : elem) : decl - def $decl_elem{x0 : reftype, x1 : expr*, x2 : elemmode}(ELEM_elem(x0, x1, x2)) = ELEM_decl(x0, x1, x2) - -def $decl_export(var_0 : export) : decl - def $decl_export{x0 : name, x1 : externidx}(EXPORT_export(x0, x1)) = EXPORT_decl(x0, x1) - -def $decl_func(var_0 : func) : decl - def $decl_func{x0 : typeidx, x1 : local*, x2 : expr}(FUNC_func(x0, x1, x2)) = FUNC_decl(x0, x1, x2) - -def $decl_global(var_0 : global) : decl - def $decl_global{x0 : globaltype, x1 : expr}(GLOBAL_global(x0, x1)) = GLOBAL_decl(x0, x1) - -def $decl_import(var_0 : import) : decl - def $decl_import{x0 : name, x1 : name, x2 : externtype}(IMPORT_import(x0, x1, x2)) = IMPORT_decl(x0, x1, x2) - -def $decl_mem(var_0 : mem) : decl - def $decl_mem{x0 : memtype}(MEMORY_mem(x0)) = MEMORY_decl(x0) - -def $decl_start(var_0 : start) : decl - def $decl_start{x0 : funcidx}(START_start(x0)) = START_decl(x0) - -def $decl_table(var_0 : table) : decl - def $decl_table{x0 : tabletype, x1 : expr}(TABLE_table(x0, x1)) = TABLE_decl(x0, x1) - -def $decl_tag(var_0 : tag) : decl - def $decl_tag{x0 : tagtype}(TAG_tag(x0)) = TAG_decl(x0) - -def $decl_type(var_0 : type) : decl - def $decl_type{x0 : rectype}(TYPE_type(x0)) = TYPE_decl(x0) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -relation wf_decl: `%`(decl) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_0{v_rectype : rectype}: - `%`(TYPE_decl(v_rectype)) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_1{v_name : name, v_externtype : externtype, var_0 : name}: - `%`(IMPORT_decl(v_name, var_0, v_externtype)) - -- wf_name: `%`(v_name) - -- wf_externtype: `%`(v_externtype) - -- wf_name: `%`(var_0) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_2{v_tagtype : tagtype}: - `%`(TAG_decl(v_tagtype)) - -- wf_typeuse: `%`(v_tagtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_3{v_globaltype : globaltype, v_expr : expr}: - `%`(GLOBAL_decl(v_globaltype, v_expr)) - -- wf_globaltype: `%`(v_globaltype) - -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_4{v_memtype : memtype}: - `%`(MEMORY_decl(v_memtype)) - -- wf_memtype: `%`(v_memtype) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_5{v_tabletype : tabletype, v_expr : expr}: - `%`(TABLE_decl(v_tabletype, v_expr)) - -- wf_tabletype: `%`(v_tabletype) - -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_6{v_typeidx : typeidx, local_lst : local*, v_expr : expr}: - `%`(FUNC_decl(v_typeidx, local_lst, v_expr)) - -- wf_uN: `%%`(32, v_typeidx) - -- (wf_local: `%`(v_local))*{v_local <- local_lst} - -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr} - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_7{byte_lst : byte*, v_datamode : datamode}: - `%`(DATA_decl(byte_lst, v_datamode)) - -- (wf_byte: `%`(v_byte))*{v_byte <- byte_lst} - -- wf_datamode: `%`(v_datamode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_8{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode}: - `%`(ELEM_decl(v_reftype, expr_lst, v_elemmode)) - -- wf_reftype: `%`(v_reftype) - -- (wf_instr: `%`(v_expr))*{v_expr <- v_expr}*{v_expr <- expr_lst} - -- wf_elemmode: `%`(v_elemmode) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_9{v_funcidx : funcidx}: - `%`(START_decl(v_funcidx)) - -- wf_uN: `%%`(32, v_funcidx) - - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - rule decl_case_10{v_name : name, v_externidx : externidx}: - `%`(EXPORT_decl(v_name, v_externidx)) - -- wf_name: `%`(v_name) - -- wf_externidx: `%`(v_externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 -def $typesd(var_0 : decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $typesd{v_rectype : rectype, decl'_lst : decl*}([TYPE_decl(v_rectype)] ++ decl'_lst) = [TYPE_type(v_rectype)] ++ $typesd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $typesd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $typesd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 -def $importsd(var_0 : decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 - def $importsd{v_name : name, var_0 : name, v_externtype : externtype, decl'_lst : decl*}([IMPORT_decl(v_name, var_0, v_externtype)] ++ decl'_lst) = [IMPORT_import(v_name, var_0, v_externtype)] ++ $importsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.61 - def $importsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $importsd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 -def $tagsd(var_0 : decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 - def $tagsd{v_tagtype : tagtype, decl'_lst : decl*}([TAG_decl(v_tagtype)] ++ decl'_lst) = [TAG_tag(v_tagtype)] ++ $tagsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.55 - def $tagsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $tagsd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 -def $globalsd(var_0 : decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 - def $globalsd{v_globaltype : globaltype, v_expr : expr, decl'_lst : decl*}([GLOBAL_decl(v_globaltype, v_expr)] ++ decl'_lst) = [GLOBAL_global(v_globaltype, v_expr)] ++ $globalsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:284.1-284.61 - def $globalsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $globalsd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 -def $memsd(var_0 : decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 - def $memsd{v_memtype : memtype, decl'_lst : decl*}([MEMORY_decl(v_memtype)] ++ decl'_lst) = [MEMORY_mem(v_memtype)] ++ $memsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:288.1-288.55 - def $memsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $memsd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 -def $tablesd(var_0 : decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 - def $tablesd{v_tabletype : tabletype, v_expr : expr, decl'_lst : decl*}([TABLE_decl(v_tabletype, v_expr)] ++ decl'_lst) = [TABLE_table(v_tabletype, v_expr)] ++ $tablesd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:292.1-292.59 - def $tablesd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $tablesd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 -def $funcsd(var_0 : decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 - def $funcsd{v_typeidx : typeidx, local_lst : local*, v_expr : expr, decl'_lst : decl*}([FUNC_decl(v_typeidx, local_lst, v_expr)] ++ decl'_lst) = [FUNC_func(v_typeidx, local_lst, v_expr)] ++ $funcsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:296.1-296.57 - def $funcsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $funcsd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 -def $datasd(var_0 : decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 - def $datasd{byte_lst : byte*, v_datamode : datamode, decl'_lst : decl*}([DATA_decl(byte_lst, v_datamode)] ++ decl'_lst) = [DATA_data(byte_lst, v_datamode)] ++ $datasd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:300.1-300.57 - def $datasd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $datasd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 -def $elemsd(var_0 : decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 - def $elemsd{v_reftype : reftype, expr_lst : expr*, v_elemmode : elemmode, decl'_lst : decl*}([ELEM_decl(v_reftype, expr_lst, v_elemmode)] ++ decl'_lst) = [ELEM_elem(v_reftype, expr_lst, v_elemmode)] ++ $elemsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:304.1-304.57 - def $elemsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $elemsd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 -def $startsd(var_0 : decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 - def $startsd{v_funcidx : funcidx, decl'_lst : decl*}([START_decl(v_funcidx)] ++ decl'_lst) = [START_start(v_funcidx)] ++ $startsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:308.1-308.59 - def $startsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $startsd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 -def $exportsd(var_0 : decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 - def $exportsd{v_name : name, v_externidx : externidx, decl'_lst : decl*}([EXPORT_decl(v_name, v_externidx)] ++ decl'_lst) = [EXPORT_export(v_name, v_externidx)] ++ $exportsd(decl'_lst) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:312.1-312.61 - def $exportsd{v_decl : decl, decl'_lst : decl*}([v_decl] ++ decl'_lst) = $exportsd(decl'_lst) -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(var_0 : decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{decl'_lst : decl*}(decl'_lst) = true - -- if ($importsd(decl'_lst) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{v_name : name, var_0 : name, v_externtype : externtype, decl_1_lst : decl*, decl_2_lst : decl*}(decl_1_lst ++ [IMPORT_decl(v_name, var_0, v_externtype)] ++ decl_2_lst) = (((((($importsd(decl_1_lst) = []) /\ ($tagsd(decl_1_lst) = [])) /\ ($globalsd(decl_1_lst) = [])) /\ ($memsd(decl_1_lst) = [])) /\ ($tablesd(decl_1_lst) = [])) /\ ($funcsd(decl_1_lst) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(v_I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(v_I) => ($decl_type(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(v_I) => ($decl_import(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(v_I) => ($decl_tag(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(v_I) => ($decl_global(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(v_I) => ($decl_mem(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(v_I) => ($decl_table(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(v_I) => ($decl_func(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(v_I) => ($decl_data(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(v_I) => ($decl_elem(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(v_I) => ($decl_start(``.0), ``.1) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(v_I) => ($decl_export(``.0), ``.1) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{decl_lst : decl*, I_lst : I*, I' : I, type_lst : type*, import_lst : import*, tag_lst : tag*, global_lst : global*, mem_lst : mem*, table_lst : table*, func_lst : func*, data_lst : data*, elem_lst : elem*, start_opt : start?, export_lst : export*} {{"("} {"module"} {Tid?{}} {(v_decl, v_I)*{v_I <- I_lst, v_decl <- decl_lst}:Tdecl_(I')*{}} {")"}} => MODULE_module(type_lst, import_lst, tag_lst, global_lst, mem_lst, table_lst, func_lst, data_lst, elem_lst, start_opt, export_lst) - -- if (I' = $concat_idctxt(I_lst)) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type_lst = $typesd(decl_lst)) - -- if (import_lst = $importsd(decl_lst)) - -- if (tag_lst = $tagsd(decl_lst)) - -- if (global_lst = $globalsd(decl_lst)) - -- if (mem_lst = $memsd(decl_lst)) - -- if (table_lst = $tablesd(decl_lst)) - -- if (func_lst = $funcsd(decl_lst)) - -- if (data_lst = $datasd(decl_lst)) - -- if (elem_lst = $elemsd(decl_lst)) - -- if (lift(start_opt) = $startsd(decl_lst)) - -- if (export_lst = $exportsd(decl_lst)) - -- if $ordered(decl_lst) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecldots_(v_I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(v_I)*{} => [``] - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - mk_record{v_recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule mk_NotationTypingScheme{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32_add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))], mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BINOP_instr(I32_numtype, mk_binop__0_binop_(I32_Inn, ADD_binop_Inn))) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([I32_valtype I32_valtype]), [], mk_list_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global_get{C : context, x : idx, t : valtype, v_mut : mut}: - `%|-%:%`(C, [GLOBAL_GET_instr(x)], mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) - -- wf_context: `%`(C) - -- wf_instr: `%`(GLOBAL_GET_instr(x)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype([]), [], mk_list_resulttype([t]))) - -- wf_globaltype: `%`(mk_globaltype_globaltype(?(v_mut), t)) - -- if ($proj_uN_0(x).0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[$proj_uN_0(x).0] = mk_globaltype_globaltype(?(v_mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, v_blocktype : blocktype, instr_lst : instr*, t_1_lst : valtype*, t_2_lst : valtype*}: - `%|-%:%`(C, [BLOCK_instr(v_blocktype, instr_lst)], mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`(C) - -- wf_instr: `%`(BLOCK_instr(v_blocktype, instr_lst)) - -- wf_instrtype: `%`(mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- wf_context: `%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []}) - -- Blocktype_ok: `%|-%:%`(C, v_blocktype, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [mk_list_resulttype(t_2_lst)], RETURN ?(), REFS []} +++ C, instr_lst, mk_instrtype_instrtype(mk_list_resulttype(t_1_lst), [], mk_list_resulttype(t_2_lst))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule r_2{q_1 : num_, q_4 : num_, q_3 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn)) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_4)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_3)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, ADD_binop_Fnn))) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule r_3{q_1 : num_, q_5 : num_}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_1)) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_5)) - -- wf_instr: `%`(BINOP_instr(F64_numtype, mk_binop__1_binop_(F64_Fnn, MUL_binop_Fnn))) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule r_4{q_6 : num_}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -- wf_instr: `%`(CONST_instr(F64_numtype, q_6)) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | LABEL_{v_n : n, instr_lst : instr*}(v_n : n, instr_lst : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_label: `%`(label) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule label_case_0{v_n : n, instr_lst : instr*}: - `%`(LABEL__label(v_n, instr_lst)) - -- (wf_instr: `%`(v_instr))*{v_instr <- instr_lst} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | FRAME_{v_n : n, v_frame : frame}(v_n : n, v_frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation wf_callframe: `%`(callframe) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule callframe_case_0{v_n : n, v_frame : frame}: - `%`(FRAME__callframe(v_n, v_frame)) - -- wf_frame: `%`(v_frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, v_store : store, X_0 : X, Y_0 : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, v_store : store, var_0 : X*, var_1 : Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, X'_lst : X*, Y : Y, Y'_lst : Y*, s_2 : store, a : nat, a'_lst : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'_lst, [Y] ++ Y'_lst) = (s_2, [a] ++ a'_lst) - -- wf_store: `%`(s_2) - -- wf_store: `%`(s_1) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'_lst) = $allocXs(syntax X, syntax Y, s_1, X'_lst, Y'_lst)) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | mk_symdots{i : nat}(i : nat) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -relation wf_symdots: `%`(symdots) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - rule symdots_case_0{i : nat}: - `%`(mk_symdots_symdots(i)) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod {Bvar(syntax symdots) Bvar(syntax B)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod {Tvar(syntax symdots) Tvar(syntax T)} => $var(syntax A) - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -grammar Tabbrev : () - diff --git a/spectec/test-middlend/test.spectec.exp b/spectec/test-middlend/test.spectec.exp index 9009808ad8..5fdaa95d92 100644 --- a/spectec/test-middlend/test.spectec.exp +++ b/spectec/test-middlend/test.spectec.exp @@ -25,6 +25,19 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} == IL Validation after pass ite... +== Running pass let-intro... + +;; test.spectec +relation HasSize: `%|-%`(nat, nat) + +;; test.spectec +relation TestNestedIter: `%|-%`(nat***, nat**) + ;; test.spectec + rule _{`n***` : nat***, `m**` : nat**}: + `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) + -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} + +== IL Validation after pass let-intro... == Running pass typefamily-removal... ;; test.spectec @@ -77,7 +90,7 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} == IL Validation after pass else... -== Running pass uncase-removal... +== Running pass else-simplification... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -89,8 +102,8 @@ relation TestNestedIter: `%|-%`(nat***, nat**) `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} -== IL Validation after pass uncase-removal... -== Running pass sideconditions... +== IL Validation after pass else-simplification... +== Running pass uncase-removal... ;; test.spectec relation HasSize: `%|-%`(nat, nat) @@ -100,11 +113,9 @@ relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec rule _{`n***` : nat***, `m**` : nat**}: `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) - -- if (|`m**`| = |`n***`|) - -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} -== IL Validation after pass sideconditions... +== IL Validation after pass uncase-removal... == Running pass sub-expansion... ;; test.spectec @@ -115,8 +126,6 @@ relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec rule _{`n***` : nat***, `m**` : nat**}: `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) - -- if (|`m**`| = |`n***`|) - -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} == IL Validation after pass sub-expansion... @@ -125,6 +134,32 @@ relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec relation HasSize: `%|-%`(nat, nat) +;; test.spectec +relation TestNestedIter: `%|-%`(nat***, nat**) + ;; test.spectec + rule _{`n***` : nat***, `m**` : nat**}: + `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) + -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} + +== IL Validation after pass sub... +== Running pass definition-to-relation... + +;; test.spectec +relation HasSize: `%|-%`(nat, nat) + +;; test.spectec +relation TestNestedIter: `%|-%`(nat***, nat**) + ;; test.spectec + rule _{`n***` : nat***, `m**` : nat**}: + `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) + -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} + +== IL Validation after pass definition-to-relation... +== Running pass sideconditions... + +;; test.spectec +relation HasSize: `%|-%`(nat, nat) + ;; test.spectec relation TestNestedIter: `%|-%`(nat***, nat**) ;; test.spectec @@ -134,7 +169,7 @@ relation TestNestedIter: `%|-%`(nat***, nat**) -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} -== IL Validation after pass sub... +== IL Validation after pass sideconditions... == Running pass alias-demut... ;; test.spectec